json - 使用 sequelize 为 JSON 列添加 MariaDB 约束检查

标签 json migration mariadb sequelize.js sequelize-cli

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

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

MariaDB JSON 文档:

  • https://mariadb.com/resources/blog/json-mariadb-102
  • https://mariadb.com/kb/en/library/json-data-type/
  • 最佳答案

    我正在分享我在这个问题( 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 返回一个 promise ,因此可以在一次迁移中链接多个操作:)

    关于json - 使用 sequelize 为 JSON 列添加 MariaDB 约束检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47729194/

    相关文章:

    mysql - 提供要从 mysql 结果中排除的用户主机对

    javascript - javascript 对象的迭代

    mysql json 字段 json_remove()

    oracle - 如何使用 liquibase 在线创建索引?

    django - Django 和 Postgres 违反外键约束

    mysql - MySQL集群可以实现同步和异步复制吗?

    mysql - sql - 如何对值进行分组?

    jquery - Gingerbread 浏览器跨域响应串联错误

    json - 任何人都可以帮助为下面的链接修改光标

    go - 使用自动迁移删除未使用的列