2016-12-22 14 views
2

私はSequelize JSONデータ型

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

を使用して、それを照会

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

    return MyModel; 
}; 

としてモデルを定義しているが、クエリ結果でdataフィールドは、文字列ではなく、JSONオブジェクトです。どうすれば修正できますか?

+1

「JSON.parse(data)」を使用してください。 –

+0

@AkshayKumarこれは私が必要と思われるものではありません。フィールドタイプがすでにJSONの場合、JSONは返されず、文字列は返されません。 – MikkoP

+0

@MikkoPあなたはどのデータベースを使用していますか? – divsingh

答えて

1

JSONのデータ型はMySQLではサポートされていません。

は仕事の周りには

+1

JSON for MySQLはSequelize 4.18以降でサポートされています –

3

それはまだMySQL JSON Data Type #4727サポートされていないクエリ時にテキストを使用して/パースを文字列化することができ、ここでhttp://docs.sequelizejs.com/en/v3/docs/models-definition/#data-types

のドキュメントを参照してください。しかし、あなたはこのような何かを行うことができます。

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; 
}; 

は、私はまた、あなたがゲッターとセッターを使用したくない場合は、あなたがそれを試してみることができますsequelize-json githubの上でこのパッケージを見つけました。

関連する問題