【发布时间】:2014-07-29 00:43:54
【问题描述】:
对此有一些问题,但我似乎无法找到目前似乎被接受的解决方案。
我正在尝试更新 MongoDB 中的文档,并且正在使用 Mongoosejs 来执行此操作。但是,我收到了这个错误:
{ [MongoError: Mod on _id not allowed]
name: 'MongoError',
lastErrorObject:
{ err: 'Mod on _id not allowed',
code: 10148,
n: 0,
connectionId: 35,
ok: 1 },
ok: 0,
errmsg: 'Mod on _id not allowed' }
我用来进行更新的代码是:
app.put('/task/:short', auth, function (req, res) {
Task.findOneAndUpdate({short:req.params.short}, req.body, function(err, task) {
if(err) console.log(err);
res.json(200, {content: task});
})
});
因为我有一个名为“short_id”的“字段”,我认为字段名称中包含“_id”部分可能是个问题,所以我将其更改为“short”,但仍然没有运气 - 我得到了同样的错误.后来我发现它认为我正在尝试更改 _id 字段,但我不知道为什么。
【问题讨论】:
-
你作为 req.body 传入了什么?
-
我在
req.body中传递了_id,我不应该对吗? -
嗯,不,_id 应该只(可能)在搜索部分,而不是更新部分(req.body)
-
记录是使用
short部分找到的,这也是唯一的 - 我认为错误正在发生,因为我也在发送 _id 字段。只是检查 -
是的,似乎已经解决了。
标签: node.js mongodb express mongoose