Firebase database()。ref()不存在的路径

时间:2018-07-25 15:18:44

标签: firebase firebase-realtime-database

在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 个答案:

答案 0 :(得分:3)

也许您可以尝试创建childVar1的全部内容,然后直接将其插入数据库中,包括childVar2: {data: test}(我想您正在使用RealtimeDatabase)。

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

答案 1 :(得分:0)

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

类似地,如果删除节点的所有子节点,则该节点本身将被自动删除(不存在“空”子节点之类的东西)。