app.get("/index/:id", function(req, res)
{
campgrounds.findById({ _id: req.params.id }).populate("comment").exec(
function(error, foundscamp) {
console.log(foundscamp);
if (error) {
consol.log(error);
console.log("you gotcha error");
} else {
//render the show page with sopecific id
res.render("show.ejs", { foundcamps: foundscamp });
}
});
});
答案 0 :(得分:0)
如果我们查看有关findById的 mongoosejs 文档:
Model.findById()
通过
_id
字段查找单个文档。findById(id)
几乎*等同于findOne({ _id: id })
。如果您想按文档_id
进行查询,请使用findById()
代替findOne()
。
- 除了如何处理undefined之外。如果您使用
findOne()
,则会看到findOne(undefined)
和findOne({ _id: undefined })
等同于findOne({})
并返回任意文档。但是,mongoose会将findById(undefined
)翻译为findOne({ _id: null })
。
您可以看到问题是findById()
消耗的是_id
,而不是json { _id : id }
。所以改变:
campgrounds.findById({ _id: req.params.id })...
到
campgrounds.findById({ req.params.id })...
其余代码看起来很好(除了Daniel指向的consol.log()
)。