我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中

Posted

技术标签:

【中文标题】我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中【英文标题】:I want to store array of object in MySQL in individual column with Sequelize 【发布时间】: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))

【问题讨论】:

【参考方案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

【讨论】:

以上是关于我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中的主要内容,如果未能解决你的问题,请参考以下文章

多张图片 + Node.js + Sequelize + Mysql

Sequelize:批量插入

Javascript(NodeJs) - 将数组和对象转换为 mysql 中的批量插入(Sequelize)

使用 NodeJS 将启动和停止时间发布到 mysql(sequelize)

NodeJS/Sequelize/MySQL - 为啥需要 postgres 依赖项?

如何在 Sequelize 中使用 MySQL JSON 数据类型