例如,假设我有一个用户架构,我想在尝试将用户保存到数据库之前验证用户名是否唯一。
...
UserSchema.path('username')
.validate(function (value, respond) {
User.findOne({ username: this.username }) // This isn't valid.
.lean()
.select('_id')
.exec(function (err, user) {
if (err) {
winston.warn('User_username: Error looking for duplicate users');
respond(false);
}
// If a user was returned, then the user is non-unique!
if (user) {
respond(false);
}
respond(true);
});
});
...
var User = mongoose.model('User', UserSchema);
我知道我可以使用mongoose.model('User').findOne(...)
,但这看起来有点傻,有没有更好的方法呢?
答案 0 :(得分:1)
您可以通过设置unique: true
在架构中创建唯一索引。这将使用mongodb中提供的唯一索引选项。以下是使用此选项的某个模型的示例代码段:
// The (generated) uniform resource locator
url: {
// ... which is required ...
required: true,
// ... which is an unique index ...
unique: true,
// ... and is a string.
type: String
}
评论中的复合键:
Schema.index({ username: 1, accountCode: 1 }, { unique: true })