【问题标题】:sequelize custom validator续集自定义验证器
【发布时间】:2026-01-20 18:00:01
【问题描述】:

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

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

有什么办法吗?

提前谢谢你:)

【问题讨论】:

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


    【解决方案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,
    });
    

    【讨论】:

    • 你是天才! :) 如此简单的解决方案,它正在工作 :) 我没有尝试过,因为没有任何信息可以让您放置他们的自定义验证器......再次掌声:)