Nick Gilmet
Nick Gilmet

Reputation: 3

Firebase database().ref() nonexistent path

In firebase, my app will be creating nested data all the time. My question is do I first have to check if a key exists before i can reference it, or can i just...

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

and it will create the nested structure for me? i.e. :

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

Should Become...

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

And if the above code will return an error, what can i do to test if a key exists, add it if it does not exist, and then push something in that?

Upvotes: 0

Views: 1308

Answers (2)

scobr
scobr

Reputation: 166

Maybe you can try something like create the full content of childVar1 and insert directly in your database including the childVar2: {data: test} (I supposed that you're using RealtimeDatabase).

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

Upvotes: 3

Doug Stevenson
Doug Stevenson

Reputation: 317760

You can write to any arbitrary location in the database, and any required nodes that do not exist will be created for you automatically. You don't have to create each child node individually.

Similarly, if all children of a node are deleted, the node itself will be deleted automatically (there is no such thing as an "empty" child node).

Upvotes: 2

Related Questions