2014-12-20 10 views
7

Ich habe ein Objekt wie:Firebase wird keine Schlüssel mit Nullwerten speichern

var _json = { "objects":[{ 
    "type":"path", "originX":"center", "originY":"center", "left":48.59, 
    "top":132.5, "width":64.5,"height":173, "fill":null,"stroke":"#3f7cc4", 
    "strokeWidth":12,"strokeDashArray":null 
}]} 

ich dieses Objekt speichern mit Firebase als:

var myDataRef = new Firebase(<...>); 
myDataRef.child("saved_projects").child(authData.uid).update({'P3': _json}); 

Aber, wenn ich das gleiche mit Firebase abrufen on Verfahren und den Wert erhalten, wie:

snapshot.val() 

ich das Objekt aber Schlüssel miterhaltenWerte bekam das heißt entfernt bekam ich nur:

{"objects":[ {"type":"path", "originX":"center", 
"originY":"center","left":48.59, "top":132.5,"width":64.5, 
"height":173, "stroke":"#3f7cc4","strokeWidth":12 
}]} 

Dies wird mir einige seltsame Probleme verursachen, da ich Fabric.js bin mit und es braucht diese Werte. Bitte helfen!

EDIT/UPDATE (Hack)

Im Moment, ich bin eine seltsame HACK verwenden, bevor das Objekt zu speichern Firebase ich alle null Werte 0 bin zu konvertieren. Aber ich möchte einen schöneren Weg kennen lernen.

function recursivelyReplaceNullToZero(j) { 
    for (var i in j){ 
     if (typeof j[i] === "object") { 
      recursivelyReplaceNullToZero(j[i]); 
     } 
     if (j[i] === null) { 
      j[i] = 0; 
     } 
    } 
} 
recursivelyReplaceNullToZero(_json); 
+5

Firebase entfernt Knoten mit Nullwerten, da können wir Ihnen nicht viel helfen. https://www.firebase.com/docs/web/api/firebase/set.html "Das Übergeben von null für den neuen Wert entspricht dem Aufrufen von remove(); alle Daten an diesem Speicherort oder an einem untergeordneten Speicherort werden gelöscht." –

+1

Das sieht wie ein [XY-Problem] aus (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378) und Sie sollten wahrscheinlich mit der (fehlerhaften?) Verwendung beginnen Fall, den Sie versuchen zu lösen. – Kato

Antwort

2

Zur Zeit verwende ich eine seltsame HACK sein, bevor das Objekt zu speichern Firebase ich alle Null-Werte auf 0 bin Umwandlung Aber ich will viel schöner Weg, wissen, bitte!

function recursivelyReplaceNullToZero(j) { 
    for (var i in j){ 
     if (typeof j[i] === "object") { 
      recursivelyReplaceNullToZero(j[i]); 
     } 
     if (j[i] === null) { 
      j[i] = 0; 
     } 
    } 
} 
recursivelyReplaceNullToZero(_json); 
Verwandte Themen