我试图从mongodb通过其对象ID获取一个项目对象,但是当我尝试在邮递员中调用该路由时,它给了我数据库中每个对象的列表(共4个对象),而不是预期一个对象。
这是我创建的用于从数据库中获取一个对象的函数
getEvent : function(id,callback)
{
EventModel.findById(id,callback);
},
这是我的路线
router.get('/events/:id',function(req,res)
{
var id = req.params.id;
db.getEvent(id,function(err,event)
{
if(err)
{
console.log("Error processing data");
}
else{
console.log("get one event is called");
res.send(event)`enter code here`;
}
})
});
最后,下面是结果
答案 0 :(得分:1)
代码正确,您提出请求的方式错误
您的格式:
http://localhost:3000/events?id=someid
URL中的 id = someID
代表一个GET
查询参数。
如果在路由中使用:id
之类的通配符,则请求URL应为:
http://localhost:3000/events/someid
someid
现在将出现在req.params.id
获得所有对象是因为在您的情况下变量id
为undefined
,因此默认情况下会忽略未定义的参数。因此,它与调用相同:
EventModel.findById({}, callback)
谢谢
答案 1 :(得分:0)
您可以尝试调用 Model.findOne()而不是 Model.findById
EventModel.findOne({id}, callback)