在findAll上查询验证错误

时间:2017-07-25 03:30:04

标签: node.js validation sequelize.js

我正在使用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;

    }

1 个答案:

答案 0 :(得分:0)

我觉得钩子比你的用例更有道理而不是验证。 你可以创建一个" beforeCreate"在DB中插入记录之前将触发的挂钩 请参阅此链接http://docs.sequelizejs.com/manual/tutorial/hooks.html