我如何在$ http中指定mongodb键/值参数



我正在使用Web应用程序的平均堆栈。在我的控制器中,我有以下内容:

var refresh3 = function() {
    $http.get('/users').success(function(response) {
        console.log("I got the data I requested");
        $scope.users = response;
        $scope.contact3 = "";
    });
};
refresh3();

这可以从我的MongoDB中拉回"用户"集合中的每个对象。我如何将参数添加到它中以带回,例如,只有"名称":" bob"的对象?我尝试使用:

在"/用户"括号中添加参数
$http.get('/users', {params:{"name":"Bob"}})

我也尝试过其中的变体,但没有运气。任何帮助将不胜感激!

如果您的服务器正在接收数据

(应该因为$http.get('/users', {params:{"name":"Bob"}})是正确的)

在服务器端,使用查询字符串:

req.query

喜欢:

app.get('/users', function(req,res){
  if(req.query.name){
    db.users.find({"name":req.query.name},function (err, docs) { console.log(docs); res.json(docs); }); 
  }
  else{
    db.users.find(function (err, docs) { console.log(docs); res.json(docs); });
  }
});

是什么问题?

您在评论中暗示您的服务器已设置为响应app.get('/users')获取请求:

db.users.find(function (err, docs) {
 // docs is an array of all the documents in users collection
 console.log(docs); res.json(docs); }); });

因此,我相信您的angularjs $ http获取是正确的,并且您的服务器正常接收参数{"name":"Bob"};它只是不知道该怎么做:它要做的就是在app.get('/users')获取请求的特定情况下返回整个集合。


如何将服务器配置为REST

您不必重新发明服务器上的车轮。

而是,您可以考虑使用中间件自动化任务(在当前情况下,任务是在收到来自客户端参数的get查询时发布适当的mongoDB请求)

例如。Express-retestify-Mongoose中间件

最新更新