序列化 JSON 数据类型

新手上路,请多包涵

我已将模型定义为

module.exports = function (sequelize, DataTypes) {
  const MyModel = sequelize.define('MyModel', {
    data: {
      type: DataTypes.JSON,
      ...
    },
    ...
  });

  return MyModel;
};

我使用查询它

MyModel.findAll().then(myModels => ...);

但是查询结果中的 data 字段是字符串,不是JSON对象。我如何解决它?

原文由 MikkoP 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 388
1 个回答

MySQL JSON 数据类型 #4727 尚不支持。但是你可以这样做:

  module.exports = function (sequelize, DataTypes) {
      const MyModel = sequelize.define('MyModel', {
        data: {
          type: Sequelize.TEXT,
           get: function () {
                return JSON.parse(this.getDataValue('value'));
            },
            set: function (value) {
                this.setDataValue('value', JSON.stringify(value));
            },
    ,
          ...
        },
        ...
      });

      return MyModel;
};

我还在 github sequelize-json 上找到了这个包,如果你不想使用 getters 和 setters,你可以试试看。

原文由 Jalal 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题