【问题标题】:How can I add pattern validation on column in already existing table using Sequelize/Postgres如何使用 Sequelize/Postgres 在现有表中的列上添加模式验证
【发布时间】:2022-12-11 01:10:56
【问题描述】:

我需要在数据库级别添加验证(正则表达式),以便没有人能够在现有表上输入/编辑具有无效输入的特定列。我正在使用 Sequelize,Postgres。

我浏览了其他现有链接,有人评论说验证发生在客户端,而不是数据库。您不需要为此进行迁移。

但我仍然想确认是否有可能在数据库级别添加验证。

我尝试使用迁移但仍然能够在数据库中输入无效值。我原以为在运行以下迁移后,我将无法输入/编辑输入错误但无法正常工作的该列。 在下面附上我的代码,以便您更好地理解。请帮助我清楚地理解它..

`module.exports = {
  async up (queryInterface, Sequelize) {
     await queryInterface.changeColumn('Table', 'Column',{
      type: Sequelize.STRING,
      validate: {
        is: "regex pattern"
      }
    });
  },

  async down (queryInterface, Sequelize) {
     await queryInterface.removeColumn('Table', 'Column');
  }
};`

【问题讨论】:

    标签: node.js postgresql validation sequelize.js rdbms


    【解决方案1】:

    我认为您在这里需要的是约束而不是验证,因为验证用于应用程序端验证,并且将从应用程序端抛出错误,但约束是从数据库端抛出错误的东西。但我认为 sequelize 不提供复杂的约束,以便在迁移后它将应用于列。 您可以在此处查看文档以获取更多参考 -> https://sequelize.org/docs/v6/core-concepts/validations-and-constraints/

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2015-12-25
      • 2021-06-02
      • 2021-06-11
      • 2016-04-06
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多