我正在使用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中间件