MongoDB + Mongoose:唯一:true无法正常工作

时间:2018-02-18 21:57:13

标签: node.js mongodb express mongoose unique

我的节点应用程序中有一个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类型。谢谢!

2 个答案:

答案 0 :(得分:4)

尝试删除数据库并再次运行程序,这可能是因为您在创建数据库后添加了约束,并且mongoose没有重新创建索引。

如果您无法删除数据库,请在mongo控制台中尝试此操作

db.users.createIndex({username:1}, {unique:true})

有关详细信息,请参阅mongo unique index

答案 1 :(得分:1)

您还可以重新索引数据库,以防您不想删除它。

mongo <db-name> db.<collection-name>.reIndex()