Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sails.js中的模型验证失败_Javascript_Node.js_Model_Sails.js_Waterline - Fatal编程技术网

Javascript Sails.js中的模型验证失败

Javascript Sails.js中的模型验证失败,javascript,node.js,model,sails.js,waterline,Javascript,Node.js,Model,Sails.js,Waterline,我在Sails.js中测试了下面的Employee.js模型,发现了一些让我难以理解的东西 当发布创建新员工的表单时,我发现Employee.js模型的第一个定义有以下错误,但是Employee.js的第二个定义有效。那么Employee.js的两个定义之间有什么区别呢 错误: Error (E_VALIDATION) :: 3 attributes are invalid at WLValidationError.WLError (/usr/local/lib/node_modules

我在Sails.js中测试了下面的Employee.js模型,发现了一些让我难以理解的东西

当发布创建新员工的表单时,我发现Employee.js模型的第一个定义有以下错误,但是Employee.js的第二个定义有效。那么Employee.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
<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>
定义1:Employee.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
      }
    }

  }
};
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
      }
    }

  }
};
定义2:Employee.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
      }
    }

  }
};
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
      }
    }

  }
};
创建新员工的表单如下:

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
<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>

名称
密码
电子邮件

只有一个区别应该存在。在第二个模型中,email属性不需要包含有效电子邮件格式的字符串。据我所知,定义如下:

name: {
    type: "STRING"
}

都是等效的,所以这可能是水线中的一个bug

虽然这个问题不久前就被问到了,但还是值得抽出一个问题来确保它得到解决。

这应该是可行的:

email: {
    type: 'email',
    required: true,
    unique: true
}

您的路线和控制器是什么样子的?