猫鼬返回新数据的重复密钥

时间:2020-04-29 17:55:10

标签: node.js express mongoose uuid

我的问题是我正在编写一个脚本,以通过邮寄请求将JSON存储在数据库服务器上。 有这样的问题:

第一次,重新启动服务器时,每个JSON都会成功提交。 之后,将不会提交JSON数据,并且会给猫鼬重复ID问题。

E11000 duplicate key error index: [database_name].[collection].$_id_ dup key: { : "2c73c49d-8ad2-49bf-b5a1-520aa595df17" }
  • 由类似模式生成的密钥
new Schema({
  _id: { type: String, default: uuidv4() },
  ... // remainings
}
  • 发布请求回电在这里
function (req, res) {
    models
     .create({'---': req.body.---, ..., ..., ..., ...})
     .then(result => res.json(result))
     .catch(err => {
       res.send(err.message);
     });
}

2 个答案:

答案 0 :(得分:3)

default参数应该是一个函数

如果您传递uuidv4(),则它将在创建模式时传递一个生成的值,并将该值用于所有文档。

架构应这样定义。

new Schema({
  _id: { type: String, default: uuidv4 },
  ... // remainings
}

答案 1 :(得分:1)

您可以遵循以下代码

async function (req, res) {
   const _doc=await models.create(req.body)
    res.send(_doc)
}