2016-12-22 2 views
2

ich ein Modell alsSequelize JSON-Datentyp

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

    return MyModel; 
}; 

definiert habe ich es

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

data Feld im Abfrageergebnis mit Abfrage ist jedoch ein String, kein JSON-Objekt. Wie repariere ich es?

+1

Verwenden Sie '' JSON.parse (Daten) '' –

+0

@AkshayKumar Das ist nicht, was ich denke, sollte erforderlich sein. Wenn der Feldtyp bereits JSON ist, sollte JSON und keine Zeichenfolge zurückgegeben werden. – MikkoP

+0

@MikkoP welche Datenbank benutzen Sie? – divsingh

Antwort

3

Abfrage noch nicht MySQL JSON Data Type #4727 Es unterstützt. Aber man kann etwas tun:

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

Ich fand auch dieses Paket auf Github sequelize-json Sie es versuchen können, wenn Sie nicht wollen, Getter und Setter verwenden.