序列化自定义验证器

时间:2018-06-21 05:27:22

标签: validation sequelize.js custom-validators sequelize-cli

我想参考现有字段创建自定义字段验证器。我所做的是创建一个自定义验证器:

const User = sequelize.define('User', {
    postalCode: {
      type: DataTypes.STRING
    },
    country: DataTypes.STRING,
  }, {
    validate: {
      wrongPostalCode() {
        if (this.postalCode && this.country) {
          if (!validator.isPostalCode(String(this.postalCode), this.country)) {
            throw new Error('Wrong postal code')
          }
        }
      }
    }
  });
  User.associate = (models) => {
    // TO DO
  };
  return User;
};

如下面在错误消息中看到的,我们正在获取此验证器,但是在“路径”行中有验证器名称。我想将其更改为例如“ postalCode”或以某种方式将其与模型中的一个字段连接。对我而言,这很重要,因为它与前端有关,并需要对其进行解析以纠正表单控件。

enter image description here

有什么办法吗?

非常感谢您:)

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用custom validator for the field?我没有尝试下面的代码,但是应该可以工作并将验证器链接到postalCode字段。

const User = sequelize.define('User', {
  postalCode: {
    type: DataTypes.STRING,
    validate: {
      wrongPostalCode(value) {
        if (this.country) {
          if (!validator.isPostalCode(String(this.postalCode), this.country)) {
            throw new Error('Wrong postal code');
          }
        }
      }
    }
  },
  country: DataTypes.STRING,
});