模型验证在 Sails.js 中失败
Model validation fails in Sails.js
我在Sails中测试了以下Employee.js模型.js我发现了一些对我来说似乎很难理解的东西。
发布创建新员工的表单时,我在第一个定义 Employee .js 模型中出现以下错误,但 Employee.js 的第二个定义有效。那么员工.js的两个定义有什么区别呢?
错误:
Error (E_VALIDATION) :: 3 attributes are invalid
at WLValidationError.WLError (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/error/WLError.js:33:18)
at new WLValidationError (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/error/WLValidationError.js:20:28)
at /usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/query/validate.js:45:43
at allValidationsChecked (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/core/validations.js:195:5)
at done (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:135:19)
at /usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:32:16
at /usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/core/validations.js:186:14
at done (/usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:135:19)
at /usr/local/lib/node_modules/sails/node_modules/waterline/node_modules/async/lib/async.js:32:16
at /usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/core/validations.js:157:64
Invalid attributes sent to Employee:
• name
• `undefined` should be a string (instead of "null", which is a object)
• "required" validation rule failed for input: null
• email
• `undefined` should be a email (instead of "null", which is a object)
• "required" validation rule failed for input: null
• password
• `undefined` should be a string (instead of "null", which is a object)
• "required" validation rule failed for input: null
定义1:员工.js
module.exports = {
attributes: {
name: {
type: 'STRING',
},
email: {
type: 'STRING',
email: true,
},
password: {
type: 'STRING',
},
toJSON: function() {
var obj = this.toObject();
return {
name: obj.name,
email: obj.email,
password: obj.password
}
}
}
};
定义2:员工.js
module.exports = {
attributes: {
name: 'STRING',
email: 'STRING',
password: 'STRING',
toJSON: function() {
var obj = this.toObject();
return {
name: obj.name,
email: obj.email,
password: obj.password
}
}
}
};
创建新员工的表格如下:
<form action="/signupemployee" method="POST">
<table>
<tr><td>Name</td><td><input type=”text” name=”name”></td></tr>
<tr><td>Password</td><td><input type=”password” name=”password”></td></tr>
<tr><td>Email</td><td><input type=”email” name=”email”></td></tr>
<tr><td></td><td><input type="submit"></td>
</table>
</form>
应该只存在一个区别。在第二个模型中,电子邮件属性不需要包含有效电子邮件格式的字符串。据我所知,定义如下;
name: {
type: "STRING"
}
和
name: "STRING"
旨在等效,因此这可能是 Waterline 中的错误。
尽管这个问题是不久前提出的,但可能仍然值得提出一个问题以确保它得到解决。
这应该有效:
email: {
type: 'email',
required: true,
unique: true
}
相关文章:
- PHP和JS脚本的奇怪问题,在我刷新页面之前第一次失败
- 使用Office.js在Excel中将20000多个单元格写入表失败
- scrypt.js失败,N大于2^14
- 解析JS SDK登录到Node.JS中运行的解析服务器=失败
- JS:执行'失败;getComputedStyle'在'窗口':参数的类型不是'
- 使用Q节点模块时,Bluemix node.js应用程序部署失败
- fs.readFileSync()在express js应用程序中失败
- CSS和JS在升级到Drupal站点时失败
- 在 Firefox 中加载带有 require.js 的文本文件失败:“AccessControlException”
- 使用节点确定成功/失败.js函数 async.retry
- 使用 HAML 的复杂 ERB 替换在 JS 中失败
- JS中的条件运算符-失败的语法错误
- 测试Ember.JS应用程序失败,返回ReferenceError:未定义Ember
- zombie.js-xhr-json总是失败
- Knockout.js多个外部模板&多VM切换失败
- js角度按钮保持循环失败
- blueimp Gallery JS初始化失败
- 用C#在Win 8.1 Chakra中执行JS的一个失败的最小例子
- Jasmine规格与Velocity.js动画失败$.Velocity.mock=true
- 1.js:23未捕获类型错误:执行'失败;appendChild'在'节点':参数1不是