我想用 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
Javascript(NodeJs) - 将数组和对象转换为 mysql 中的批量插入(Sequelize)
使用 NodeJS 将启动和停止时间发布到 mysql(sequelize)