javascript - Firebase 不会保存具有空值的键

标签 javascript object firebase

我有一个像这样的对象:

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

我使用 Firebase 将该对象保存为:

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

但是,当我使用 Firebase on 方法检索相同内容并将值获取为:

snapshot.val()

我得到了对象,但是具有 null 值的键被删除了,即我只得到了:

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

这给我带来了一些奇怪的问题,因为我正在使用 Fabric.js 并且它需要这些值。 请帮忙!

编辑/更新(破解)

目前,我使用了一个奇怪的 HACK,在将对象存储到 Firebase 之前,我将所有 null 值转换为 0。但我想知道一个更好的方法。

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

最佳答案

目前我正在使用一个奇怪的 HACK,在将对象存储到 Firebase 之前我将所有空值转换为 0。但我想知道更好的方法,谢谢!

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

关于javascript - Firebase 不会保存具有空值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580844/

相关文章:

javascript - ES6 - 解构赋值 - 将某些属性从现有对象解包到新对象?

arrays - 为了在 Matlab 中预分配内存,我想初始化我的对象数组。我该怎么做呢?

php - 类继承、代码分解、php 对象模型

dart - 工厂等待 Future 来构造对象

javascript - 用于 RoR 的 Lightbox/Facebox Gem

javascript - 需要模型的 Ember 测试初始化​​器

javascript - React.JS 将一个 HTML 文件插入另一个 HTML 文件。

javascript - 使用 Firebase 为 Web 应用创建房间

java - Firebase Firestore : Returning NullPointer Exception when accessing data

javascript - GoogleUser 对象没有 grantOfflineAccess 方法?