如何在 mysql Sequelize 实例中拥有数组的数据类型?

Posted

技术标签:

【中文标题】如何在 mysql Sequelize 实例中拥有数组的数据类型?【英文标题】:How can I have a datatype of array in mysql Sequelize instance? 【发布时间】:2017-06-11 04:14:07 【问题描述】:

我正在构建一个使用 Node/Express 和 mysql 以及 Sequelize 作为 ORM 的应用程序。我想要一个 Array 的数据类型,但 sequelize 文档说这仅限于 postgres。

基本上,如果我有一个包含 3 列的用户表(例如,姓名、电话、favColors),我希望 favColors 填充从用户检索到的字符串值数组。我该怎么做?

【问题讨论】:

您必须序列化您的数组并存储为字符串。 谢谢@Adam,我打算将数据存储为字符串,然后再拆分值,但我认为可能有一种不那么老套的方法。 【参考方案1】:

您可以为此使用 getter/setter 函数:

favColors: 
    type: Sequelize.STRING,
    allowNull: false,
    get() 
        return this.getDataValue('favColors').split(';')
    ,
    set(val) 
       this.setDataValue('favColors',val.join(';'));
    ,

更多信息:https://sequelize.org/master/manual/getters-setters-virtuals.html

【讨论】:

【参考方案2】:

您可以将您的字段定义为json

type: Sequelize.JSON

然后将数据保存为array

【讨论】:

我想实现这个想法,但 vsCode 的智能感知建议它只适用于 postgreSQL。所以我什至没有尝试过 是的,有些数据类型只适用于某些类型的数据库。你可以阅读这个doc,看看你是否可以使用特定的数据类型。

以上是关于如何在 mysql Sequelize 实例中拥有数组的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何连接nodejs sequelize aws rds mysql数据库和ec2实例

使用 sequelize 在 mySql 中定义静态函数(如在 mongoose 中)

在 sequelize 中检查 mysql 连接

nodejs使用sequelize操作mysql实例

如何在 MySql 中使用 sequelize 运行多个原始查询?

在 Sequelize 中使用实例方法