保存数据之前的mongoose验证它说完成不是一个功能?

时间:2018-04-23 18:47:21

标签: node.js mongoose mongoose-schema

我想检查电子邮件是否已经在数据库中或者没有,所以我使用下面的代码它总是给我错误完成不是一个功能不知道为什么会发生这种情况请帮我解决这个问题:

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

2 个答案:

答案 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);