我不了解Mongoose模式中unique
和required
等字段的用途。在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有什么意义呢?
答案 0 :(得分:2)
unique
将在属性上创建一个MongoDB "unique" index,防止该属性具有相同值的文档存在于同一个集合中。
但是,由于它是由数据库强制执行的,因此唯一可行的方法是保存文档并捕获MongoDB将返回的重复键错误。
您可以像这样检查错误:
if (err && err.code === 11000) { ...duplicate... }