mrv*_*rvn 9 node.js sequelize.js
我正试图在我的Sequelize模型中实现验证.该模型定义如下
var model = sequelize.define('Model', {
from: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isEmail: true
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我正在尝试构建一个实例并验证它:
var m = Model.build({ from: 'obviously not a email' });
var err = m.validate();
Run Code Online (Sandbox Code Playgroud)
但如果我这样做console.log(err),我明白了{ fct: [Function] }只会.定义抛出异常的自定义验证程序会导致未处理的异常.
我该怎么用validate()?
sde*_*old 10
以下是如何使用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)
})
})
Run Code Online (Sandbox Code Playgroud)
这将导致:
{ from: [ 'Invalid email' ] }
Run Code Online (Sandbox Code Playgroud)
附注:您也可以跳过validate-call,只需创建实例:
Model.sync().success(function() {
Model
.create({ from: "foo@bar" })
.success(function() {
console.log('ok')
})
.error(function(errors) {
console.log(errors)
})
})
Run Code Online (Sandbox Code Playgroud)
错误方法将收到与上一代码片段中相同的错误对象.
问候,sdepold.
在Sequelize中验证的另一种方法是使用钩子而不是模型验证.我正在使用'beforeValidate'钩子并添加自定义验证(使用验证器模块)和Promises,验证失败时被拒绝.
var validator = require('validator');
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define("User", {
email: {
type:DataTypes.STRING
},
password: {
type:DataTypes.STRING
}
});
//validate here
User.hook('beforeValidate', function(user, options) {
if(validator.isEmail(user.email)){
return sequelize.Promise.resolve(user);
}else{
return sequelize.Promise.reject('Validation Error: invalid email');
}
});
return User;
};
Run Code Online (Sandbox Code Playgroud)
小智 5
这对我
有用在模型中: -
var model = sequelize.define('Model', {
from: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isEmail: true
}
}
}
Run Code Online (Sandbox Code Playgroud)
保存模型时,在控制逻辑中执行以下操作: -
var Sequelize = require('sequelize');
var Model = require('your_model_folderpath').model;
Model.create({from: 'not email'}).then(function(model) {
// if validation passes you will get saved model
}).catch(Sequelize.ValidationError, function(err) {
// responds with validation errors
}).catch(function(err) {
// every other error
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19325 次 |
| 最近记录: |