我正在使用sequelize 2.我基本上试图进行验证,只允许最多2个角色等于每个帐户成员的人。目前,我收到一个错误:
未处理拒绝错误:[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
当我运行dev db build时。顺便提一下,我尝试插入8条记录。
如何在没有此错误的情况下更改此验证以使其正常工作?我是节点的新手。
module.exports = function(sequelize, DataTypes) {
var MemberAccount = sequelize.define('member_account', {
role: {
type: DataTypes.STRING,
allowNull: false,
validate: {
isIn: {
args: [['member',
'advocate']],
msg: 'Must be member or advocate'
},
hasFewMembers(value, next) {
var self = this;
var v = MemberAccount.findAll({
where: {
role: 'member'
}
,attributes: [[sequelize.fn('COUNT', sequelize.col('role'))]]
})
.then(function(member_count) {
if (self.role=='member' && member_count == 2) {
throw new Error('Only 2 members allowed per account!');
}
return next();
})
.catch(function (err) {
return next(err);
});
return v;
}
答案 0 :(得分:0)
我觉得钩子比你的用例更有道理而不是验证。 你可以创建一个" beforeCreate"在DB中插入记录之前将触发的挂钩 请参阅此链接http://docs.sequelizejs.com/manual/tutorial/hooks.html