Node.js 保存时返回所有唯一索引错误
我必须输入以下代码:Node.js 保存时返回所有唯一索引错误,node.js,mongoose,Node.js,Mongoose,我必须输入以下代码: var UserSchema = mongoose.Schema({ email: { type: String, unique: true }, username: { type: String, unique: true } }); var User = db.model('User', UserSchema); var user = new User(); user.email = 'some@email.com'
var UserSchema = mongoose.Schema({
email: {
type: String,
unique: true
},
username: {
type: String,
unique: true
}
});
var User = db.model('User', UserSchema);
var user = new User();
user.email = 'some@email.com'
user.username = 'peter'
user.save(function(err){
if (err) return console.log(err)
console.log('user saved')
})
在第一次运行时,它会显示用户保存的
,这是完全正确的。在第二次跑步时,它给了我
{ [MongoError: E11000 duplicate key error index: node-login.users.$username_1 dup key: { : "peter" }]
name: 'MongoError',
err: 'E11000 duplicate key error index: node-login.users.$username_1 dup key: { : "peter" }',
code: 11000,
n: 0,
lastOp: 0,
connectionId: 1455732,
ok: 1 }
那么
电子邮件
呢?它也是一个副本,应该返回一个错误。如果每次只抛出一个错误,为什么是用户名
而不是电子邮件
<代码>电子邮件位于架构中的用户名
上方。mongoose
如何决定首先检查/返回哪个副本?这不是mongoose做的,而是MongoDB。标记的两个重复字段中的哪一个可能未定义。我假设它只是在检查的第一个索引未通过唯一性测试时抛出错误
如果您需要的信息多于错误中提供的信息,则需要单独查询所有可能重复的字段。谢谢!这件事你甚至连亚伦都知道