我的节点应用程序中有一个user.js模型,我希望用户名和其他一些字段是唯一的。在我的模型文件中,我已正确声明了unique
类型,如下所示:
// User Schema
const UserSchema = new Schema({
// PERSONAL USER INFO
username: {
type: String,
required: true,
index: true,
unique: true,
},
email: {
type: String,
required: true,
index: true,
unique: true
},
password: {
type: String,
required: true,
},
....
});
但是,在重新启动我的服务器和mongo会话后,我仍然可以创建具有相同用户名和相同电子邮件的用户。我可以从mongo shell和前端用户注册页面执行此操作。
我缺少第二部分吗?我不确定如何在此时正确执行unique
类型。谢谢!
答案 0 :(得分:4)
尝试删除数据库并再次运行程序,这可能是因为您在创建数据库后添加了约束,并且mongoose没有重新创建索引。
如果您无法删除数据库,请在mongo控制台中尝试此操作
db.users.createIndex({username:1}, {unique:true})
有关详细信息,请参阅mongo unique index
答案 1 :(得分:1)
您还可以重新索引数据库,以防您不想删除它。
mongo <db-name>
db.<collection-name>.reIndex()