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

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

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

【问题讨论】:

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

标签: mysql arrays sequelize.js


【解决方案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,看看你是否可以使用特定的数据类型。
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2013-07-18
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多