【问题标题】:I want to store array of object in MySQL in individual column with Sequelize我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中
【发布时间】:2019-12-15 13:49:20
【问题描述】:

之前我正在寻找如何使用 Sequelize 在我的 MySQL 中插入对象数组,然后我找到了一种直接插入数组的解决方案,例如。 [1,2] 在单列中

insert into TABLE_NAME(id, marks) VALUES (21, [1, 2])

但我正在寻找一种可以在 Sequelize 中用于插入的解决方案

{
  "id": 21 ,
  "marks": [90, 90] 
}

例如查询:

insert into TABLE_NAME(id, marks) VALUES ((21, 90),(21, 90))

【问题讨论】:

    标签: mysql node.js json sequelize.js


    【解决方案1】:

    您可以在模型的 sequelize setter 函数中对数组进行字符串化,并将数据类型设置为字符串,如下面的示例所示

    avatar: {
        type: dataType.STRING,
        set(val) {
          this.setDataValue("avatar", JSON.stringify(val ?? ""));
        },
      },
    

    “头像”是表格的列名。当您从数据库中取回时,您现在可以使用 JSON.parse(avatar) 将其转换回您的对象数组。

    【讨论】:

      【解决方案2】:

      你可以使用 type: Sequelize.JSON 来存储一个对象,但是 MySQL 不保留字段的顺序

      【讨论】:

        【解决方案3】:

        目前还在sequelize v5中,数组数据类型仅在PostgreSQL中支持,MySQL没有默认方式。 DOC

        Sequelize.ARRAY(Sequelize.TEXT)       // Defines an array. PostgreSQL only.
        Sequelize.ARRAY(Sequelize.ENUM)       // Defines an array of ENUM. PostgreSQL only.
        

        但仍有解决方法CHECK THIS

        【讨论】:

          猜你喜欢
          • 2011-02-14
          • 2019-08-05
          • 1970-01-01
          • 2013-11-06
          • 2014-05-16
          • 2023-03-05
          • 2012-10-08
          • 1970-01-01
          • 2013-11-06
          相关资源
          最近更新 更多