Simultaneously write/update to multiple locations in Firebase
According to google docs:
To simultaneously write to specific children of a node without overwriting other child nodes, use the update()
method.
When calling update()
, you can update lower-level child values by specifying a path for the key. If data is stored in multiple locations to scale better, you can update all instances of that data using data fan-out.
For example, a social blogging app might create a post and simultaneously update it to the recent activity feed and the posting user’s activity feed using code like this:
function writeNewPost(uid, username, picture, title, body) {
// A post entry.
var postData = {
author: username,
uid: uid,
body: body,
title: title,
starCount: 0,
authorPic: picture
};
// Get a key for a new Post.
var newPostKey = firebase.database().ref().child('posts').push().key;
// Write the new post's data simultaneously in the posts list and the user's post list.
var updates = {};
updates['/posts/' + newPostKey] = postData;
updates['/user-posts/' + uid + '/' + newPostKey] = postData;
return firebase.database().ref().update(updates);
}
This example uses push()
to create a post in the node containing posts for all users at /posts/$postid
and simultaneously retrieve the key. The key can then be used to create a second entry in the user's posts at /user-posts/$userid/$postid
.
Using these paths, you can perform simultaneous updates to multiple locations in the JSON tree with a single call to update()
, such as how this example creates the new post in both locations. Simultaneous updates made this way are atomic: either all updates succeed or all updates fail.
Read further here to get an overview of how to Read and Write Data and Save Data in firebase.