MongoError: E11000 duplicate key error collection: qiandao.assets index: _id
这个问题出现在mongo插入数据时,原因是主键_id重复;
众所周知,mongo在插入数据时,会自动生成主键_id,但是当我们操作async.eachSeries方法,插入数据时,会导致多个数据生成相同_id;
解决方案:自己生成一个_id,然后插入数据,这样,mongo就不会自己生成_id了;
错误代码:
async.eachSeries(data, function (itemInfo, callback) {
let item = _.extend({},itemInfo);
item.userId = userId;
item.createdAt = Date.now();
item.updatedAt = Date.now();
//item._id = utils.getUUID();
//插入数据
modelsBox.Money.create(item).then((money) => {
callback(null);
}).catch((error) => {
callback(error);
})
}, function (err) { throw err; });
正确代码:
async.eachSeries(data, function (itemInfo, callback) {
let item = _.extend({},itemInfo);
item.userId = userId;
item.createdAt = Date.now();
item.updatedAt = Date.now();
item._id = utils.getUUID();//自己生成_id
//插入数据
modelsBox.Money.create(item).then((money) => {
callback(null);
}).catch((error) => {
callback(error);
})
}, function (err) { throw err; });
觉得有用的话,给个赞吧,一起进步!!!