我想检查电子邮件是否已经在数据库中或者没有,所以我使用下面的代码它总是给我错误完成不是一个功能不知道为什么会发生这种情况请帮我解决这个问题:
userSchema.path('email_id').validate(function(value, done) {
this.model('User').count({ email_id: value }, function(err, count) {
if (err) {
return done(err);
}
// If `count` is greater than zero, 'invalidate'
done(!count);
});
}, 'Email already exists');
错误是:
TypeError:done不是函数 在C:\ nodejs \ school_election_system \ Model \ user.js:65:9 在C:\ nodejs \ school_election_system \ node_modules \ mongoose \ lib \ model.js:3949:16
答案 0 :(得分:0)
找到解决方案:
userSchema.path('email_id').validate(function (value, respond) {
return mongoose.model('User').count({ email_id: value }).exec().then(function (count) {
return !count;
})
.catch(function (err) {
throw err;
});
}, 'Email already exists.');
答案 1 :(得分:-1)
如果您需要唯一验证,我建议使用mongoose-unique-validator
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
var userSchema = mongoose.Schema({
email: { type: String, index: true, unique: true, required: true },
});
userSchema.plugin(uniqueValidator);