如何在nodejs中使用sequelize设置模型验证?

how to set model validation with sequelize in nodejs?

我是 nodejs 的新手。我已经为 nodejs orm 使用了 sequelize。但是我无法将验证设置为属性;

models/farmer.js

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Farmer = sequelize.define('Farmer', {
    username:{
            type: DataTypes.STRING,
            allowNull: false,
    },
    address: DataTypes.STRING,
    email: {
        type: DataTypes.STRING,
        validate: {
           isEmail: true
        }
    },
    phone:{
            type: DataTypes.STRING,
            allowNull: false,
    },
  }, {
    classMethods: {
      associate: function(models) {
          Farmer.hasMany(models.Task);
        // associations can be defined here
      }
    }
  });
  return Farmer;
};

错误:

Possibly unhandled SequelizeValidationError: Validation error at /Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/lib/instance-validator.js:149:14 at tryCatch1 (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/util.js:43:21) at Promise$_callHandler [as _callHandler] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:639:13) at Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:653:18) at Promise$_settlePromiseAt [as _settlePromiseAt] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:817:14) at Promise$_settlePromises [as _settlePromises] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:951:14) at Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/async.js:75:12) at Async$consumeFunctionBuffer (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/async.js:38:14) at doNTCallback0 (node.js:419:9) at process._tickCallback (node.js:348:13)

如何设置验证模型?

这个:

Possibly unhandled SequelizeValidationError: Validation error at

表示您的续集验证有效。它检查验证并在验证失败时抛出错误 (SequelizeValidationError)。

但是这个 :

Possibly unhandled

表示您对此错误不做任何处理。你应该捕获这个错误并做一些事情(例如发送带有适当错误代码的响应)。

例如,当您创建新的 'Farmer' 时,您的代码可能如下所示:

Farmer.create({
  //your data
}).then(function(){
  //do something when Farmer is created
}).catch(function(err){
  //do something when you get error
  //you could check if this is validation error or other error
});

有时在 sequelize 之外验证错误是个好主意(但不要在 sequelize 中删除验证,让两个验证一起工作)(我写了一些参数 )。