我有这样的架构设置:
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
。但它没有,它创造了新用户完美,导致数据库中出现重复的电子邮件。
为什么会这样?
答案 0 :(得分:0)
mongo,因此mongoose会为您的文档分配一个自动ID字段。通常是“_id”。 尝试从架构中删除“id”以解决问题。