Mongoose中'isUnique'字段的用途

时间:2015-06-26 22:38:39

标签: node.js mongodb mongoose

我不了解Mongoose模式中uniquerequired等字段的用途。在unique的情况下,您似乎必须编写自己的方法来查询MongoDB以查看该值是否已存在。我想'需要'Mongoose只需要检查是否在Mongoose模型的构造函数中传递了该值。但由于独特,我不明白其目的。

userSchema = mongoose.Schema({

        username: {
            type: String,
            unique: true,
            required: true,
            validate: [validation.usernameValidator, 'not a valid username']
        },
         ...

为了验证用户名,我必须创建自己的function = validation.usernameValidator来检查MongoDB以查看用户名是否已存在。那么isUnique有什么意义呢?

1 个答案:

答案 0 :(得分:2)

unique将在属性上创建一个MongoDB "unique" index,防止该属性具有相同值的文档存在于同一个集合中。

但是,由于它是由数据库强制执行的,因此唯一可行的方法是保存文档并捕获MongoDB将返回的重复键错误。

您可以像这样检查错误:

if (err && err.code === 11000) { ...duplicate... }