我必须遵循以下代码:
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')
})
在第一次运行时它会显示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 }
email
怎么样?它也是重复的,应该返回错误。如果每次只抛出一个错误,为什么它是username
而不是email
?架构中email
高于username
。 mongoose
如何决定首先检查/返回的副本?
答案 0 :(得分:1)
这不是Mongoose,它是MongoDB。标记的两个重复字段中的哪一个可能未定义。我假设它只是在它检查的第一个索引未通过唯一性测试时抛出错误。
如果您需要的信息多于错误中提供的信息,则需要单独查询所有可能的重复字段。