2014-12-20 12 views
7

ho un oggetto come:Firebase non salverà le chiavi con valori nulli

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 
}]} 

risparmio questo oggetto utilizzando Firebase come:

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

Ma, quando ho recuperare lo stesso utilizzando Firebase on metodo e ottenere il valore come:

snapshot.val() 

ottengo l'oggetto, ma le chiavi con null valori ricevuti rimossi vale a dire ho ricevuto solo:

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

Questo mi sta causando alcuni problemi di strano dal momento che sto usando Fabric.js e ha bisogno di questi valori. Per favore aiuto!

EDIT/UPDATE (Hack)

Per il momento, sto usando un hack strano, prima di riporre l'oggetto da Firebase sto convertendo tutti i valori null a 0. Ma voglio sapere un modo migliore per farlo.

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 rimuove i nodi con valori nulli, non c'è molto che possiamo aiutarti con lì. https://www.firebase.com/docs/web/api/firebase/set.html "Passare null per il nuovo valore equivale a chiamare remove(), tutti i dati in questa posizione o qualsiasi percorso secondario verranno eliminati." –

+1

Sembra un [problema XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378) e probabilmente dovresti iniziare con l'uso (imperfetto?) caso che stai cercando di risolvere. – Kato

risposta

2

Per il momento sto utilizzando un hack strano, prima di riporre l'oggetto da Firebase sto convertendo tutti i valori nulli a 0. Ma voglio sapere modo molto più bello, per favore!

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