À l'aide de sequelize pour stocker et récupérer des objets JSON dans un Modèle/Exemple

Je suis à la recherche de l'effet de levier sequelize sur un gros projet, et espérais que je pourrais l'utiliser pour stocker un Objet JSON comme une propriété dans un Modèle.

Je me sens comme j'ai du mal avec cela, mais peut-être que je suis absent quelque chose de simple?

Je suis à la définition d'un modèle (Context) comme suit:

var contextProperties = {

  contextName: { type: Sequelize.STRING, validate: { is: ["[a-z]",'i'], notEmpty: true } },

  _trackList: {type: Sequelize.TEXT},    
  trackList: {type: Sequelize.TEXT}

}

var contextGetSet = {

  getterMethods: {
    trackList: function(){
      return JSON.parse(this._trackList);
    }
  },

  setterMethods: {
    trackList: function(v){
      this._trackList = JSON.stringify(v);
    }
  }

};

var Context = sequelize.define('Context', contextProperties, contextGetSet);

Maintenant, quand je créer mon Context, il semble que cela fonctionne avant de me sauver.

var contextMain;

Context.create({contextName: "Whatever"}).success(function (context){

  contextMain = context;

  contextMain.trackList = { atrackList: "1111", anotherTrackList: 2872 };
  console.log(constextMain.trackList);
  //logs { atrackList: "1111", anotherTrackList: 2872 } as expected


  contextMain.save().success(function (contextSaved){
    console.log(contextSaved.values);
    //all values are null except for the contextName
  });

});

De sorte que le JSON EST le réglage de droit, mais de l'objet renvoyé par le save().success() méthode ne semble pas avoir les bonnes valeurs de ce que j'ai mis à.

Quand je log l'objet retourné par la save().success() méthode (ie. contextSaved.values) l'objet ressemble à ceci:

{ contextName: 'Whatever',
  _trackList: 'null',
  trackList: null,
  id: 6,
  createdAt: Fri Dec 06 2013 15:57:39 GMT-0500 (EST),
  updatedAt: Fri Dec 06 2013 15:57:39 GMT-0500 (EST)
}

Tout est nul!!

Encore plus bizarre, c'est que quand je regarde les sauver de la requête SQL de sauvegarde contextMain, il semble être sauver des droite!

Executing: UPDATE "Contexts" SET "contextName"='Whatever', "_trackList"='{"atrackList":"1111","anotherTrackList":2872}', "trackList"=NULL,"id"=7, "createdAt"='2013-12-06 20:59:39.278 +00:00', "updatedAt"='2013
-12-06 20:59:39.294 +00:00' WHERE "id"=7 RETURNING *

Avis que: "_trackList"='{"atrackList":"1111","anotherTrackList":2872}'

Aussi quand je regarde les réels SQL ligne pour elle, il ne le stringified objet JSON y!

Si je charge le Contexte à l'aide de sequelize...

Context.findAll().success(function(contexts) {
  console.log(JSON.stringify(contexts))
  //also displays null for _trackList and trackList
});

Sorte de très étrange. Toute aide grandement, grandement appréciée!!
Merci beaucoup! Désolé, ce post est très long!

OriginalL'auteur Arjun Mehta | 2013-12-06