有条件地续集allownull约束

Posted

技术标签:

【中文标题】有条件地续集allownull约束【英文标题】:Sequelize allownull constraint conditionally 【发布时间】:2020-08-09 20:17:10 【问题描述】:

我需要在 sequelize 中进行迁移以更改列。如何根据另一列的值对一列使用 allowNull 约束? 例如,考虑我有 A 列和 B 列。在迁移中,我想要如下所示:

queryInterface.changeColumn('book', ['A'], 
     allowNull: false,
     where:  B: true  
);

但正如我在示例中看到的,我们不能在 changeColumn 中使用 'where'。

【问题讨论】:

【参考方案1】:

我认为你必须使用 customValidator 来解决这个问题:

queryInterface.changeColumn('book', ['A'], 
  allowNull: true,
  validate: 
    customValidator(value) 
      if (value === null && this.B) 
        throw new Error("A not be null if B === true");
      
    
  
);

【讨论】:

以上是关于有条件地续集allownull约束的主要内容,如果未能解决你的问题,请参考以下文章

根据条件更新续集列

在 where 条件下用 " 续集换行列

如何在node.js中拥有多个关联/条件/包含在findAll上的续集

续集关联 On 或 ON

在子查询中续集“WHERE”子句

用 sqlite3 续集不会创建数据库