我对电子邮件和用户名唯一性使用以下验证
const unique = (field) => {
return (value, callback) => {
if (!value || value.length <= 0)
callback(true)
const query = Mongoose.model('User').where(field, new RegExp(`^${value}$`, 'i'))
if(!this.isNew)
query.where('_id').ne(this._id)
query.count((err, n) => callback(n == 0))
}
}
但是,在更新期间this
未设置,因此在使用他/她自己的电子邮件/用户名更新现有用户时,更新失败,因为在where子句中this._id未定义。
我在验证期间记录了这个值,它是一个空对象{}