我有这个用于分享照片的网络应用。
现在我有这条路线应该从以下数组中返回所有用户的照片。
路线:
<form>
<input id="check29" type="checkbox" name="item" value="29" />
<input class="lab-btn" type="submit" value="ADD ALL" name="send">
</form>
我发现req.body.following是未定义的。这就是我使用angular调用它的方式:
router.get('/getphotos',function(req, res){
var reqPhotos = [];
console.log( "\n" + req.body.username + "\n");
try{
for(x =0; x < req.body.following.length; x++){
reqPhotos.push({username: req.body.following[x].username});
}
}
catch(err){
console.log(err);
}
Photo.find({username: reqPhotos}).exec(function(err, allPhotos){
if(err){console.log(err);}
else{
res.json(allPhotos);
}
});
});
为什么会发生这种情况以及如何解决?
谢谢!
答案 0 :(得分:5)
不确定服务器端,但我发现角度代码有两个问题。在执行HTTP GET
请求时,您无法传递正文。尝试通过网址传递任何必要的数据。
此外,返回的实际数据将在response.data
中。做这样的事情:
var urlData = ""; //add any url data here, by converting 'data' into url params
$http.get('/users/getphotos/' + urlData).then(function(response){
$scope.photos = response.data;
});
要构建urlData,请查看this问题。
当然,您必须调整服务器,以便从网址而不是从正文中读取数据。
答案 1 :(得分:3)
我不知道请求请求标头中的内容类型是application/json
还是application/x-www-form-urlencoded
还是其他。每种内容类型都必须区别对待。如果您使用expressjs,请尝试使用multer来处理multipart-form
内容类型的请求,我通常会在我的应用程序中使用它。
答案 2 :(得分:1)
$ http在GET方法中没有为数据对象采用第二个参数。但是,$ http确实接受数据对象作为POST方法中的第二个参数。
您需要将其作为配置对象的params属性传递,并在节点中的req.query中访问它:
$ http.get('enter / your / url /',{params:data})