Sequelize JSON数据types

我已经定义了一个模型

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

我使用查询

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

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

目前还不支持MySQL JSON数据types#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上find了这个包,如果你不想使用getter和setter,那么你可以尝试一下。

JSON数据types不支持MySQL。

请参阅文档http://docs.sequelizejs.com/en/v3/docs/models-definition/#data-types

解决方法是在查询时使用文本和string化/parsing