使用sequelize为JSON列添加MariaDB Constraint CHECK

时间:2017-12-09 13:45:38

标签: json migration mariadb sequelize.js sequelize-cli

我正在使用MariaDB v10.2.11,从v10.2.7起,您可以使用带有约束的JSON列来验证行的JSON值。

我想通过Sequelize迁移添加一个约束,但我不知道如何。

MariaDB JSON文档:

1 个答案:

答案 0 :(得分:2)

我正在分享我在这个问题中遇到的解决方案(https://github.com/sequelize/sequelize/issues/8767)(这是我的)。

module.exports = {
  up: (queryInterface, Sequelize) =>
    queryInterface
      .createTable('tableName', {
        // id, other columns
        column1: Sequelize.JSON,
        // more columns
      })
      .then(() =>
        queryInterface.addConstraint('tableName', ['column1'], {
          type: 'check',
          where: {
            column1: Sequelize.literal('JSON_VALID(column1)'),
          },
          name: 'check_column1_has_valid_json',
        }),
      ),
  down: (queryInterface) => queryInterface.dropTable('tableName'),
};

由于createTableaddConstraint会返回一个承诺,因此可以在一次迁移中链接多个操作:)