NodeJS GET请求不使用AngularJS

时间:2016-04-20 14:03:17

标签: javascript angularjs node.js express

我有这个用于分享照片的网络应用。

现在我有这条路线应该从以下数组中返回所有用户的照片。

路线:

<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);
        }
   });

});

为什么会发生这种情况以及如何解决?

谢谢!

3 个答案:

答案 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})