2015-06-19 90 views
0

我敢肯定,问题是与密码验证程序,因为如果我注释掉文档插入。另外如果我输入一个有效的密码一切正常。这里是我的整个UserSchema猫鼬得到模型验证失败,而不是自定义错误消息

var UserSchema = new Schema({ 
    firstName: String, 
    lastName: String, 
    email: { 
     type: String, 
     unique: true, 
     match: /.+\@.+\..+/ 
    }, 
    website: { 
     type: String, 
     set: urlModifier 
    }, 
    username: { 
     type: String, 
     trim: true, 
     required: true, 
     unique: true 
    }, 
    password: { 
     type: String, 
     validate: [ 
      function(password) { 
      return password.length >= 6; 
      }, 
     'Password should be longer' 
    ] 
    }, 
    createdAt: { 
     type: Date, 
     default: Date.now 
    }, 
    role: { 
     type: String, 
     enum: ['admin', 'owner', 'user'] 
    } 
}); 

我有这个问题是不是我的自定义错误消息我得到

ValidationError: User validation failed 
<br> &nbsp; &nbsp;at model.Document.invalidate (C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\document.js:1162:32) 
    <br> &nbsp; &nbsp;at C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\document.js:1037:16 
     <br> &nbsp; &nbsp;at validate (C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\schematype.js:651:7) 
      <br> &nbsp; &nbsp;at C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\schematype.js:679:9 
       <br> &nbsp; &nbsp;at Array.forEach (native) 
        <br> &nbsp; &nbsp;at SchemaString.SchemaType.doValidate (C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\schematype.js:656:19) 
         <br> &nbsp; &nbsp;at C:\Users\lotus\Desktop\mastering_mean\application\node_modules\mongoose\lib\document.js:1035:9 
          <br> &nbsp; &nbsp;at process._tickCallback (node.js:355:11) 

猫鼬版^ 4.05

不知道这是一个错误,API改变了,或者我做错了什么。

回答

0

在我学习的特定教程中没有提到这一点。

http://mongoosejs.com/docs/validation.html

定制错误消息是在验证错误对象可用返回到在控制器和err保存(ERR)函数。

基本

user.save(函数(ERR){ 如果(ERR){ 未来回报(ERR); }其他{ res.json(用户);} });

将返回默认的错误消息 “用户验证失败”

user.save(function(err) { 
     if(err) { 
      console.log(err.errors.password.message); 
      return next(err); 
     } else { 
      res.json(user); 
     } 
    }); 

将返回的自定义错误消息