&引用;电邮;验证规则使sails服务器崩溃-Mongo with sails.js

&引用;电邮;验证规则使sails服务器崩溃-Mongo with sails.js,sails.js,waterline,Sails.js,Waterline,当电子邮件验证规则在sails.js模块上失败时,服务器正在崩溃。 下面是我的模块片段: //用户的电子邮件地址 email: { type: 'string', email: true, required: true, unique: true }, 错误如下所示: 错误:错误(E_验证)::1属性无效 在WLValidationError.WLError(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\

当电子邮件验证规则在sails.js模块上失败时,服务器正在崩溃。 下面是我的模块片段: //用户的电子邮件地址

email: {
  type: 'string',
  email: true,
  required: true,
  unique: true
},
错误如下所示:

错误:错误(E_验证)::1属性无效 在WLValidationError.WLError(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\error\WLError.js:26:15) 在新的WLValidationError(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\error\WLValidationError.js:20:28) 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\query\validate.js:45:43 检查所有验证(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\core\validations.js:203:5) 完成时(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:135:19) 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:32:16 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\core\validations.js:184:23 完成时(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:135:19) 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:32:16 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\core\validations.js:157:64 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:125:13 at Array.forEach(本机) 在每个节点(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:46:24) 在Object.async.each(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:124:9) 验证时(C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\waterline\lib\waterline\core\validations.js:156:11) 在C:\Users\yuri\AppData\Roaming\npm\node\u modules\sails\node\u modules\async\lib\async.js:125:13 发送给用户的属性无效: •电子邮件 •
未定义的
应该是电子邮件(而不是“admin@gmailasd“,这是一个字符串)


声明电子邮件字段的正确方法如下所示:

email: {
  type: 'email',
  required: true,//Email field will be required for insert or update  
  unique: true //Insert or update will crash if you try to insert duplicate email
},
您可以在这里看到所有不同的属性类型

如果要捕获插入/更新错误,可以在控制器上执行以下操作:

MyModel.create({email:email}).exec(function(err, model)
{
     if(err)
     {
       //Check if it's a validation error or a crash 
       if(err.code == "E_VALIDATION")
         sails.log.debug("valid fail, check form");
       else 
         sails.log.debug("crash");
     }
     else
     {
       //do what you want to do with the data
     }
}); 
她回答了这个问题。 多亏了jaumard,我发现了问题所在。 我错误地使用了未定义的字段,没有检查以前是否存在 err.originalError.code,但它未定义。 因此,正确的方法是: err.originalError&&err.originalError.code&&err.originalError.code==11000

而不是
err.originalError.code==11000。

以前版本的Sails建议电子邮件验证是这样实现的

电邮:{ 键入:“字符串”, 电子邮件:是的, 必填项:true },

当前版本应该是这样的

电邮:{ 键入:“电子邮件”, 必填项:true
},

它仍在破碎:(如果您没有在电子邮件中指定需要验证的人,则正常抛出异常。如果您不想尝试捕获您的创建/更新方法,则正常。我可以在模型上添加异常处理程序吗?或者我应该在控制器中添加异常处理程序吗?我认为您只能在控制器上而不是在模型上执行此操作。
电子邮件
属性上的文档文件。