Mongoose 独特和自定义验证

Posted

技术标签:

【中文标题】Mongoose 独特和自定义验证【英文标题】:Mongoose unique and custom validation 【发布时间】:2018-06-11 05:01:15 【问题描述】:

我想为电子邮件添加唯一性错误消息的验证。为此,我使用了插件 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);

如果我尝试保存已经在数据库中的电子邮件,我得到 ValidationError:用户验证失败:电子邮件:错误,预计 email 是唯一的。值:xx.xxx@xx.com 在 ValidationError.inspect (C:\nodeapps\pps\node_modules\mongoose\lib\error\validation.js:57:23)

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

有人知道怎么做吗?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

是的!我在控制台中遇到错误,但我想显示它们。像这样: var errors = req.validationErrors(); if(errors) res.render('register', errors:errors );我需要将此错误包装到 ValidationError 中并在表单中显示错误 我不知道如何显示错误。 User.createUser(newUser, function(err, user) console.log(err); );

以上是关于Mongoose 独特和自定义验证的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 AbstractAuthenticationProcessingFilter 和自定义 CustomAuthenticationProvider 的身份验证无法正常工作

Spring Security 和自定义 ws 身份验证

spring boot spring security 基于自定义令牌的身份验证和自定义授权

Django rest 框架 JWT 和自定义身份验证后端

Django 1.5:UserCreationForm 和自定义身份验证模型

Spring Security 和自定义外部身份验证