Firebase update vs set

Posted on

Firebase update vs set – Even if we have a good project plan and a logical concept, we will spend the majority of our time correcting errors abaout and javascript. Furthermore, our application can run without obvious errors with JavaScript, we must use various ways to ensure that everything is operating properly. In general, there are two types of errors that you’ll encounter while doing something wrong in code: Syntax Errors and Logic Errors. To make bug fixing easier, every JavaScript error is captured with a full stack trace and the specific line of source code marked. To assist you in resolving the JavaScript error, look at the discuss below to fix problem about Firebase update vs set.

Problem :

As the title says, I can’t get the differences between update and set. Also the docs can’t help me, as the update example works exactly the same if I use set instead.

The update example from the docs:

function writeNewPost(uid, username, title, body) {

    var postData = {
        author: username,
        uid: uid,
        body: body,
        title: title,
        starCount: 0
    };

    var newPostKey = firebase.database().ref().child('posts').push().key;

    var updates = {};
    updates['/posts/' + newPostKey] = postData;
    updates['/user-posts/' + uid + '/' + newPostKey] = postData;

    return firebase.database().ref().update(updates);
}

The same example using set

function writeNewPost(uid, username, title, body) {

    var postData = {
        author: username,
        uid: uid,
        body: body,
        title: title,
        starCount: 0
    };

    var newPostKey = firebase.database().ref().child('posts').push().key;

    firebase.database().ref().child('/posts/' + newPostKey).set(postData);
    firebase.database().ref().child('/user-posts/' + uid + '/' + newPostKey).set(postData);
}

So maybe the example from the docs should be updated, because now it looks like update and set do the exact same thing.

Kind regards,
Bene

Solution :

Atomicity

One big difference between the two samples you’ve given is in the number of write operations they send to the Firebase servers.

In the first case, you’re sending a single update() command. That entire command will either succeed or fail. For example: if the user has permission to post to /user-posts/' + uid, but doesn’t have permission to post to /posts, the entire operation will fail.

In the second case, you’re sending two separate commands. With the same permissions, the write to /user-posts/' + uid will now succeed, while the write to /posts will fail.

Partial update vs complete overwrite

Another difference is not immediately visible in this example. But say that you’re updating the title and body of an existing post, instead of writing a new post.

If you’d use this code:

firebase.database().ref().child('/posts/' + newPostKey)
        .set({ title: "New title", body: "This is the new body" });

You’d be replacing the entire existing post. So the original uid, author and starCount fields would be gone and there’ll just be the new title and body.

If on the other hand you use an update:

firebase.database().ref().child('/posts/' + newPostKey)
        .update({ title: "New title", body: "This is the new body" });

After executing this code, the original uid, author and starCount will still be there as well as the updated title and body.

Leave a Reply

Your email address will not be published. Required fields are marked *