开发者问题收集

Firebase 数据库()。ref()不存在路径

2018-07-25
1248

在 firebase 中,我的应用将始终创建嵌套数据。我的问题是,我是否必须先检查某个键是否存在,然后才能引用它,或者我是否可以只...

const ref = firebase.database().ref("dataTree/" + childVar1 + "/" + childVar2);
ref.push({data: "this is data"});

它会为我创建嵌套结构吗?即:

{
    "dataTree": {
        "notChildVar1": {
            "someChildName": {
                "data": "test"
            }
        }
        "alsoNotChildVar1": {
            "someChildName": {
                "data": "test"
            }
        }
    }
}

应该变成...

{
    "dataTree": {
        "notChildVar1": {
            "someChildName": {
                "data": "test"
            }
        }
        "alsoNotChildVar1": {
            "someChildName": {
                "data": "test"
            }
        }
        "childVar1": {
            "childVar2": {
                "data": "test"
            }
        }
    }
}

如果上述代码将返回错误,我该怎么做才能测试某个键是否存在,如果不存在则添加它,然后在其中推送某些内容?

2个回答

也许您可以尝试创建 childVar1 的完整内容并直接插入到您的数据库中,包括 childVar2: {data: test (我认为您正在使用 RealtimeDatabase)。

const ref = firebase.database().ref("dataTree/" + childVar1);
ref.push(
   "childVar2": {
     "data": "this is data"
   }
);
scobr
2018-07-25

您可以写入数据库中的任意位置,并且会自动为您创建任何不存在的所需节点。您不必单独创建每个子节点。

同样,如果删除了节点的所有子节点,则节点本身也会被自动删除(不存在“空”子节点)。

Doug Stevenson
2018-07-25