为什么在将Mongoose架构的_id设置为函数时会遇到“dup key”错误?...
var mongoose = require('mongoose'),
uuid = require('node-uuid');
var testSchema = new mongoose.Schema({
_id: { type: String, default: uuid.v1() },
name: { type: String, required: true, trim: true },
});
var test = mongoose.model('Test', testSchema);
module.exports = test;
而且,我每次尝试新建一个测试模型......
var testA = new Test({
name: 'test A'
});
testA.save(function(err, testA){
if (err) {
console.log('Failure saving test A: ' + err);
} else {
// Do something
}
});
var testB = new Test({
name: 'test B'
});
testB.save(function(err, testB){
if (err) {
console.log('Failure saving test B: ' + err);
} else {
// Do something
}
});
尝试为我的数据库设定种子时,每次尝试创建多个文档时,我都会在任何集合上遇到重复的_id值。即使嵌套单个文档也会保存在先前失败的回调中。
我假设每次新建一个实例时都会调用该函数。
答案 0 :(得分:3)
这是因为uuid.v1()
实际上返回一个字符串,因此您将默认值设置为相同的uuid。相反,传递函数:uuid.v1
(没有括号)。