mam obiektu takich jak:Firebase nie zbawi klucze z wartości null
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
}]}
zapisać ten obiekt przy Firebase jak:
var myDataRef = new Firebase(<...>);
myDataRef.child("saved_projects").child(authData.uid).update({'P3': _json});
Ale kiedy pobierać takie same użyciu Firebase on
Sposób i uzyskać wartość jako:
snapshot.val()
mam obiektu, ale klucze z null
Wartości został usunięty tj Mam tylko:
{"objects":[ {"type":"path", "originX":"center",
"originY":"center","left":48.59, "top":132.5,"width":64.5,
"height":173, "stroke":"#3f7cc4","strokeWidth":12
}]}
To jest przyczyną mnie jakieś dziwne problemy, ponieważ używam Fabric.js
i potrzebuje tych wartości. Proszę o pomoc!
EDIT/UPDATE (Hack)
Na razie używam dziwny hack, przed zapisaniem obiektu do Firebase mam konwersję wszystkich wartości null
do 0
. Ale chcę poznać lepszy sposób.
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);
Firebase usuwa węzły, które mają wartości null, nie możemy w tym pomóc. https://www.firebase.com/docs/web/api/firebase/set.html "Podanie wartości NULL dla nowej wartości jest równoznaczne z wywołaniem remove(), wszystkie dane w tej lokalizacji lub jakiejkolwiek lokalizacji podrzędnej zostaną usunięte." –
To wygląda na [problem XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378) i powinieneś zacząć od (błędnego?) Użycia przypadek, który próbujesz rozwiązać. – Kato