node.js - MongoError : Mod on _id not allowed

标签 node.js mongodb express mongoose

对此有一些问题,但我似乎无法找到目前似乎被接受的解决方案。

我正在尝试更新 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 字段,但我不知道为什么。

最佳答案

问题是因为我使用 short(它是唯一的)来查找文档并对其进行更新,并且 _id 被作为值发送来更新 which can'完成不了。

因此,在发送参数之前,我从对象中删除了 _id

delete the_object._id

现在一切正常。

关于node.js - MongoError : Mod on _id not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103966/

相关文章:

node.js - Sequelize -自动 : Changing Postgres Table Schemas

javascript - mongodb中的快速分页如何显示上一页

arrays - 忽略字段mongodb请求

php - 是否有用于 codeigniter 的 mongodb 支持的用户身份验证库?

javascript - 将缓冲区(图像)转换为文件

express - 如何分发使用 Electron、Node.js 和 Python 构建的桌面应用程序

node.js - 在 Node js 的 SQL Server 驱动程序上构建失败

Node.js 后台任务

javascript - 如何在 ORM(sequelize js)查询上添加条件检查?

javascript - NodeJS - 循环嵌套 API 调用