Mongoose独特的自定义验证

时间:2017-12-31 18:31:34

标签: node.js mongodb mongoose

我想添加带有错误消息的验证,以确保电子邮件是唯一的。因为我使用了插入的mongoose-unique-validator。

这是我的模特

var mongoose = require('mongoose'); //V 3.6.1
var uniqueValidator = require('mongoose-unique-validator');

// User Schema
var UserSchema = mongoose.Schema({
    username: {
        type: String,
        required: true
    },
    email: {
        type: String,
        index: true, 
        unique: true,
        required: true,
        uniqueCaseInsensitive: true 
    },
    password: {
        type: String,
        required: true
    }
});

UserSchema.plugin(uniqueValidator);

如果我尝试保存已经在db中的电子邮件,我就会

ValidationError: User validation failed: email: Error, expected `email` to be unique. Value: `xx.xxx@xx.com`
at ValidationError.inspect (C:\nodeapps\pps\node_modules\mongoose\lib\error\validation.js:57:23)

我需要将此错误包装到ValidationError中,并在调用validate或save时显示表单中的错误。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:0)

我认为您可以像这样调用User.save:

let user = new User({
  username: 'username',
  email: 'email',
  password: 'password'
})

user.save(function (error) {
  if (error) {
    console.log(error.message)
  }
})

如果在保存用户时发生任何错误,消息字段应包含错误消息。