【问题标题】:how to set model validation with sequelize in nodejs?如何在nodejs中使用sequelize设置模型验证?
【发布时间】:2016-05-27 21:28:29
【问题描述】:

我是 nodejs 的新手。我已经将 sequelize 用于 nodejs orm。但我无法将 validate 设置为属性;

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

错误:

可能未处理的 SequelizeValidationError:验证错误 在 /Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/lib/instance-validator.js:149:14 在 tryCatch1 (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/util.js:43:21) 在 Promise$_callHandler [as _callHandler] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:639:13) 在 Promise$_settlePromiseFromHandler [as _settlePromiseFromHandler] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:653:18) 在 Promise$_settlePromiseAt [as _settlePromiseAt] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:817:14) 在 Promise$_settlePromises [as _settlePromises] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/promise.js:951:14) 在 Async$_consumeFunctionBuffer [as _consumeFunctionBuffer] (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/async.js:75:12) 在 Async$consumeFunctionBuffer (/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/node_modules/sequelize-bluebird/js/main/async.js:38:14) 在 doNTCallback0 (node.js:419:9) 在 process._tickCallback (node.js:348:13)

如何设置验证模型?

【问题讨论】:

    标签: javascript node.js sequelize.js


    【解决方案1】:

    这个:

    可能未处理的 SequelizeValidationError:验证错误在

    表示您的 sequelize 验证有效。它检查验证,当验证失败时抛出错误 (SequelizeValidationError)。

    但是这个:

    可能未处理

    表示您对此错误不采取任何措施。您应该捕获此错误并做一些事情(例如发送带有适当错误代码的响应)。

    例如,当您创建新的“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 中的验证,让两个验证一起工作)(我写了一些论点 here)。

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2016-04-15
      • 1970-01-01
      • 2021-01-12
      • 2016-04-17
      • 2015-11-16
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多