2

プロジェクトParse.com objectsの localStorage に保存するための良い解決策はありますか?Javascript

私が遭遇した問題はobject to JSON、を変換すると、オブジェクトの ID が失われることです。これは、id がParse.com objects属性に格納されていないためです。
ヒントをください。
前もって感謝します。

私の小さな例を更新

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

次の出力が得られます。

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

** ID を持っています。

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

** id がありません。

これは、このスタック オーバーフローの質問に関連して います。バックボーン モデル .toJSON() は、すべての属性を JSON にレンダリングしません。

そのため、JSON 文字列をローカル ストレージに格納する最も簡単な方法は何だろうと考えていました。

4

2 に答える 2

3

更新された Parse が JS SDK に対して行ったことに興味があるかもしれません:

v1.1.10 — 2012 年 11 月 13 日

Parse.Object の拡張された JSON シリアライゼーション: Parse.Object で JSON.stringify() を呼び出すと、デフォルトの属性「objectId」、「createAt」、および「updatedAt」が出力に含まれるようになりました。

于 2012-12-03T14:09:53.863 に答える
0

わかりました。私が言えることから(上記のコメントを参照)、ParseのネイティブJS APIは、オブジェクトの属性(つまり、コアデータ)のみをシリアル化し、IDや作成されたものなどの実際のメタデータはシリアル化しないことを前提としています。本当に彼らのシステムにのみものを保存してほしい、これは理にかなっています。ただし、これを自分で処理する独自のコードを作成できます。たとえば、以下のこのメソッドは、2つのメタデータキー(idとcreatedAt、さらにありますが、テスト中です)を取得し、コア属性の「data」というキーを作成します。

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

これをサンプル結果オブジェクトでテストしたところ、問題なく動作しました。繰り返しになりますが、完全を期すために他のメタデータキーを追加したいと思うかもしれません。(または、IDのみを気にするかもしれません。)

于 2012-09-03T13:57:36.457 に答える