如何在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 中删除验证,让两个验证一起工作)(我写了一些参数 )。
我是 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 中删除验证,让两个验证一起工作)(我写了一些参数