唯一索引不适用于Mongoose模式

时间:2015-01-13 09:58:23

标签: javascript node.js mongodb mongoose schema

我有这样的架构设置:

var UserSchema = new Schema({
  id: {type: String, required: true, unique: true, index: true, default: mongoose.Types.ObjectId},

  name: { type: String, required: true },
  email: { type: String, required: true, unique: true, index: true },
  mobile: { type: String, unique: true, sparse: true },
  password: { type: String, required: true }

});

除非设置unique:true,否则电子邮件字段允许重复,似乎工作得很好。我做了以下事情:

User.create({
  name: req.body.name,
  email: req.body.email,
  mobile: req.body.mobile,
  password: password
}, function(err, user) {
  if (err) return res.send({ invalid : true });
});

如果req.body.email是数据库中已有的值,则上述查询应返回err。但它没有,它创造了新用户完美,导致数据库中出现重复的电子邮件。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

mongo,因此mongoose会为您的文档分配一个自动ID字段。通常是“_id”。 尝试从架构中删除“id”以解决问题。