node.js - 无法使 Sequelize 验证工作

标签 node.js sequelize.js

我正在尝试在我的 Sequelize 模型中实现验证。模型定义如下

var model = sequelize.define('Model', {
  from: {
    type:               DataTypes.STRING,
    allowNull:          false,
    validate: {
      isEmail: true
    }
  }
}

然后我正在尝试构建一个实例并对其进行验证:

var m = Model.build({ from: 'obviously not a email' });
var err = m.validate();

但如果我执行 console.log(err),我只会得到 { fct: [Function] }。定义引发异常的自定义验证器会导致未处理的异常。

我应该如何正确使用validate()

最佳答案

以下是使用 Sequelize v2.0.0 解决问题的方法:

var Sequelize = require("sequelize")
  , sequelize = new Sequelize("sequelize_test", "root")

var Model = sequelize.define('Model', {
  from: {
    type:      Sequelize.STRING,
    allowNull: false,
    validate:  {
      isEmail: true
    }
  }
})

Model.sync().success(function() {
  Model.build({ from: "foo@bar" }).validate().success(function(errors) {
    console.log(errors)
  })
})

这将导致:

{ from: [ 'Invalid email' ] }

旁注:您也可以跳过 validate 调用并直接创建实例:

Model.sync().success(function() {
  Model
    .create({ from: "foo@bar" })
    .success(function() {
      console.log('ok')
    })
    .error(function(errors) {
      console.log(errors)
    })
})

error 方法将收到与前面代码片段中完全相同的错误对象。

您好, sdepold。

关于node.js - 无法使 Sequelize 验证工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253052/

相关文章:

node.js - Sequelize 不适用于 Heroku,但适用于本地

node.js - Node JS Sequelize 无法连接到 Azure SQL 数据库

linux - npm 安装显示无法调用未定义的方法 'localeCompare'

javascript - Node JS 在类 B 中实例化类 A

node.js - 使用 openpgp 在转换后加密流

sequelize.js - 包含在带有 Sequelize 的中间表中

javascript - 仅当文档与数据库不同时才更新文档?

node.js - Loopback 支持代理身份验证吗?

reactjs - 如何在 React Native 中导入 sequelize 库?

javascript - Sequelize belongsToMany where过滤器