1

.set(jsonObject)angularfire2を使用してFirebase DBにアクセスすると、オブジェクトがエスケープされます(各二重引用符の前にバックスラッシュが追加されます)。DB(console.firebase.google.com)
に手動で追加すると、すべて正常に動作します。jsonObject

    let obj = {
      key0 : 0,
      key1 : 1
    };
    console.log(obj);
    
    let jsonObject = JSON.stringify(obj);
    console.log(jsonObject);

// af is AngularFire instance
af.database.object("/myList/0").set(jsonObject)

Firebase DB コンソールの結果は次のとおりです。"{\"key0\":0,\"key1\":1}"

しかし、Firebase DB コンソールに移動して、エスケープされたオブジェクトを の値に置き換えると、期待どおりの結果が得られますconsole.log(jsonObject)

何が問題ですか?

ありがとうございました

4

1 に答える 1

4

このように値を設定している場合:

let obj = {
  key0 : 0,
  key1 : 1
};
let jsonObject = JSON.stringify(obj);
af.database.object("/myList/0").set(jsonObject);

の値/myList/0は文字列になります。

{"key0":0,"key1":1}

コンソールに表示される値は JSON として表示されます。JSON 形式の場合、上記の文字列値は次のようになります。

"{\"key0\":0,\"key1\":1}"

JSON 文字列ではなくオブジェクトを使用して値を設定すると、期待どおりの動作が得られるはずです。

 let obj = {
  key0 : 0,
  key1 : 1
};
af.database.object("/myList/0").set(obj);
于 2016-09-03T11:31:49.547 に答える