繁体   English   中英

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

[英]how to set model validation with sequelize in nodejs?

我是nodejs的新手。 我已经使用了nodejs orm的sequelize。 但我不能设置属性的验证;

车型/ 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:在tryCatch1上的/Users/esmrkbr/Desktop/nodejs/sequelize-express-demo/node_modules/sequelize/lib/instance-validator.js:149:14的验证错误(/ 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_module s / 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)atNTCallback0(node.js:419:9)at process._tickCallback(node.js:348:13)

我该如何设置验证模型?

这个 :

可能未处理SequelizeValidationError:验证错误

意味着您的续集验证有效。 它检查验证并在验证失败时抛出错误( 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中删除验证,让两个验证一起工作)(我在这里写了一些参数)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM