我试图在现有数据库中的mongoose模型上按字段强制执行唯一性。
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true,
}
})
然后,当我使用已分配的电子邮件创建用户时,它会通过,我有2个用户使用相同的电子邮件。
我已阅读所有相关的SO答案> 2015年及所有约dropDups
,which is deprecated。
我想我通过手动运行
解决了这个问题db.users.createIndex({email:1}, {unique:true})
然而,这在开发和生产中显然变得很麻烦,特别是考虑到属性处理它的mongoose docs状态:
unique:boolean,是否在此属性上定义唯一索引。
考虑到现有的数据库和新的集合,有人可以提供一个明确的解决方案,以便在Mongoose模型上按字段强制执行唯一性吗?感谢
答案 0 :(得分:1)
在创建唯一索引之前已经创建了两个用户。因此,您可以插入两个具有相同电子邮件的用户。您可以尝试下面的代码,它确保已创建所有索引:
UserModel.on('index', function(error) {
const user1 = new UserModel({
email: '3489'
});
const user2 = new UserModel({
email: '3489'
});
user1.save(console.log);
user2 .save(console.log);
});