首页 > 解决方案 > 续集自定义验证器

问题描述

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

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”,或者以某种方式将其与模型中的一个字段连接起来。这对我来说非常重要,因为这与前端有关并将其解析为正确的表单控制。

在此处输入图像描述

有什么办法吗?

提前谢谢你:)

标签: validationsequelize.jscustom-validatorssequelize-cli

解决方案


您是否尝试过为该字段使用自定义验证器?我没有尝试过以下代码,但应该可以工作并将验证器链接到该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,
});

推荐阅读