Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 保存时返回所有唯一索引错误_Node.js_Mongoose - Fatal编程技术网

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。标记的两个重复字段中的哪一个可能未定义。我假设它只是在检查的第一个索引未通过唯一性测试时抛出错误


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

谢谢!这件事你甚至连亚伦都知道