Node.js 更新子文档不工作nodejs mongodb express
我有一个端点:Node.js 更新子文档不工作nodejs mongodb express,node.js,mongodb,express,Node.js,Mongodb,Express,我有一个端点: restaRouter.route('/lists/:id/') .post(function(req, res) { db.Restaurant.update({_id: req.params.id}, { $push: { reviews: req.body }}, function(err, doc) { if (err) { res.send(err); }
restaRouter.route('/lists/:id/')
.post(function(req, res) {
db.Restaurant.update({_id: req.params.id}, { $push: { reviews: req.body }}, function(err, doc) {
if (err) {
res.send(err);
}
res.json(doc);
})
});
当我发表文章时,应该使用\u id
查找这样的文档。动态生成\u id
:
{
"_id": "571616e420cac41111e90ecf",
"title": "Yep",
"address": "Somewhere",
"about": "Everything",
"reviews": [
{
"name": "My name",
"email": "email@gmail.com",
"message": "My message"
}
]
}
并将项目作为子文档推送到reviews字段
req.body
如下所示:
{
"name": "foo",
"email": "foo@bar.com",
"message": "myFoo bar"
}
我是否知道json对象是命中端点的对象?对控制台日志(请求正文)确认
现在,当我发帖时,我得到的回复是
{
"ok": 1,
"nModified": 0,
"n": 0
}
当时没有任何修改。我做错了什么?我怀疑这与此有关,但我使用的是mongojs,在您的查询中,您必须使用
{u id:ObjectId('myobectID')}
以你的例子来说:
db.Restaurant.update({_id: ObjectId(req.params.id)}, { $push: { reviews: req.body }}, function(err, doc) {
...
}
mongojs特定的
由于OP中提到了mongojs
,因此可以通过以下方式完成上述操作:
db.Restaurant.update({_id: mongojs.ObjectId(req.params.id)} ...
固定的。有点奇怪,我错过了。谢谢如果你能接受我的回答,我的名誉会很感激:)