Orm 有条件地对AllowFull约束进行续集

Orm 有条件地对AllowFull约束进行续集,orm,sequelize.js,database-migration,Orm,Sequelize.js,Database Migration,我需要在sequelize中进行迁移以更改列。如何基于另一列的值对一列使用AllowFull约束? 例如,考虑到我有列A和B。在迁移中,我想有如下类似的内容: queryInterface.changeColumn('book', ['A'], { allowNull: false, where: { B: true } }); 但正如我在示例中所看到的,我们不能在changeColumn中使用“where”。我认为您必须使用customValidator解决以下问题:

我需要在sequelize中进行迁移以更改列。如何基于另一列的值对一列使用AllowFull约束? 例如,考虑到我有列A和B。在迁移中,我想有如下类似的内容:

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

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

我认为您必须使用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");
      }
    }
  }
});