2 votes

Solution simple de stockage local de Parse.com

Quelqu'un a-t-il une bonne solution pour stocker Parse.com objects dans le localStorage pour Javascript projets ?

Le problème que j'ai rencontré est que, lors de la conversion du fichier object to JSON nous perdons l'identifiant de l'objet. Cela s'explique par le fait que l'identifiant dans Parse.com objects n'est pas stockée dans les attributs.
Donnez-moi un indice.
Merci d'avance.

Mise à jour Mon petit exemple

var Something = Parse.Object.extend("Something");
var something = new Something();
something.set("attribute1", "attribute1");
something.save(null, {
        success: function(obj) {
            something.fetch({
                success: function(obj) {
                    console.log("object:"); console.log(obj); 
                    console.log("json:");     console.log(JSON.stringify(obj));
                },
            })
        },
    })

Ce qui donne ce résultat :

object: appmob.js:1563
d.hasOwnProperty.f
_changing: false
_escapedAttributes: Object
_existed: true
_hasData: true
_hashedJSON: Object
_opSetQueue: Array[1]
_pending: Object
_previousAttributes: Object
_saving: false
_serverData: Object
_silent: Object
attributes: Object
changed: Object
cid: "c0"
createdAt: Mon Sep 03 2012 15:43:50 GMT+1000 (EST)
id: "e419YJmhR5"
updatedAt: Mon Sep 03 2012 15:43:50 GMT+1000 (EST)
__proto__: c

** qui a l'id.

json: 
{"attribute1":"attribute1","attribute2":"attribute2"} 

** qui n'a pas d'identifiant.

Ceci est lié à cette question de stackoverflow Le modèle Backbone .toJSON() ne rend pas tous les attributs en JSON

Je me demandais donc quel serait le moyen le plus simple de stocker la chaîne JSON dans le localstorage.

3voto

Meirion Points 788

Vous serez peut-être intéressé par la mise à jour que Parse a apportée à son JS SDK :

v1.1.10 - 13 novembre 2012

Sérialisation JSON étendue pour Parse.Object : L'appel à JSON.stringify() sur un Parse.Object inclura désormais les attributs par défaut 'objectId', 'createAt', et 'updatedAt' dans la sortie.

0voto

Raymond Camden Points 4411

Ok, d'après ce que je peux dire (voir les commentaires ci-dessus), l'API JS native de Parse suppose que vous ne voulez sérialiser que les attributs (c'est-à-dire les données de base) des objets et PAS les métadonnées réelles, y compris l'ID, créé, etc. Puisqu'ils veulent vraiment que vous stockiez des objets UNIQUEMENT sur leur système, c'est logique. Cependant, vous pouvez écrire votre propre code pour gérer cela vous-même. Par exemple, la méthode ci-dessous récupère deux clés de métadonnées (id et createdAt, il y en a plus, mais je ne faisais que tester) et crée une clé appelée 'data' pour les attributs principaux.

function serializeParseObject(pob) {
  var ob = {};
  ob.id = pob.id;
  ob.createdAt = pob.createdAt;
  ob.data = pob.attributes;
  return JSON.stringify(ob);
}

J'ai testé un exemple d'objet résultat et cela a fonctionné correctement. Encore une fois, vous voudrez probablement ajouter les autres clés de métadonnées pour être plus complet. (Ou peut-être que vous ne vous intéressez qu'à l'identifiant).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X