保存时返回所有唯一索引错误

时间:2012-11-06 22:56:05

标签: 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'
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高于usernamemongoose如何决定首先检查/返回的副本?

1 个答案:

答案 0 :(得分:1)

这不是Mongoose,它是MongoDB。标记的两个重复字段中的哪一个可能未定义。我假设它只是在它检查的第一个索引未通过唯一性测试时抛出错误。

如果您需要的信息多于错误中提供的信息,则需要单独查询所有可能的重复字段。