DEV Community

redeemefy
redeemefy

Posted on • Originally published at gilbertodiaz.com on

Adding Dummy Data to Firebase

NOTE
This post was originally posted in my personal blog

Table of contents

Assumptions

  • You are developing an application utilizing firebase.
  • You need a fast and easy way to populate Firebase with dummy data.
  • You want to add another tool to your toolbox.

Scope

There are times that you have an idea and you just started coding it out. It’s just an idea so you don’t want to write a test suite or to set up an entire development environment. After a couple of hours, you realized that your idea is looking good. Now you need some data to shape some UI and to get some functionality going on. This short tutorial will show you how to get that data quickly to firebase.

Resources

The mockaroo.com website has a short tutorial on how to use the app. You can also find a Mockaroo video tutorials here.

How to get the data?

Click the link mockaroo.com in the resources section above. Once you get to the page you will see a screen like the following…

Modify the fields as needed. In the #Row type the number of records you need; I believe that the amount is limit to 1000 or less, in my case I choose 100. In the Format pulldown choose Json and click Download Data.

Pushing data to Firebase

If you don’t care about having the auto-generated firebase ids in your data, you can just import the file into the desired node in Firebase. You will have id’s from 0 to whatever number of records you choose. I don’t know about you but I like to simulate the data as close as possible, including the firebase id. You can accomplish this by pushing the JSON file utilizing a short javascript script. The following snippet will push the data to a node called users and firebase will auto-generate ids for us.

var config = {
  apiKey: 'your api key goes here',
  authDomain: 'your_app.firebaseapp.com',
  databaseURL: 'https://your_app.firebaseio.com',
  projectId: 'your_app',
  storageBucket: 'your_app.appspot.com',
  messagingSenderId: '1234567890'
};
firebase.initializeApp(config);

let users = firebase.database().ref('users/');

$.ajax({
  url: './MOCK_DATA.json'
}).done(data => {
  data.forEach(item => {
    users.push(item);
  });
});
Enter fullscreen mode Exit fullscreen mode

The data in the Firebase console will looks like this…

AWESOME!!! now I have 100 users with auto generated firebase id’s.

Creating data with relationships

There are times where you need some sort of relationship between nodes. To accomplish this you need to push your data to Firebase, export the data that you just push to Firebase and upload it to mockaroo. Sounds a little confusing but don’t worry I’m going to walk you through the process.

We are going to utilize the same json files with 100 users but we are going to slightly change the way we push the data to Firebase. Consider the following javascript script…

let users = firebase.database().ref('users');
$.ajax({
  url: '../users.json'
}).done(data => {
  data.forEach(item => {
    let newPostKey = users.push().getKey();
    item.uid = newPostKey;
    users.child(newPostKey).set(item);
  });
});
Enter fullscreen mode Exit fullscreen mode

First, we need to create a reference to the user’s node. If the node doesn’t exist in Firebase it will be created for you on the first push so you don’t need to create yourself. As the previous script, I’m utilizing jQuery but you can use whatever way you are comfortable with. After reading the file I’m iterating over each record. On each iteration I’m asking Firebase to create a new entry but without the data… let newPostKey = users.push().getKey();. What happened with this line is that Firebase creates a new entry to the node, returns the key, and is waiting for the data to close the transaction. In the next line… item.uid = newPostKey; I’m taking that newPostKey which is the ugly_id that Firebase creates for each entry, and adding it as a parameter inside the node as uid. Finally, I’m posting the data to the desired node. Now my data looks like the following…

Now we have the uid as a value for each user. This is useful since we have easy access to the value. Next, we need to export the users node from Firebase. Once you download the file, try to find a json to csv converter online. Once you have your data in csv format go to mockaroo.com and click on DATASETS at the navbar. Click on Upload a New Dataset, navigate your system to find your csv file. Now click on SCHEMAS on the navbar and create a new schema, in my case I’m going to create a schema called events. I want my uid value from the users node on each event entry, to do that I need to import the data set to the new schema. In the Type column select Dataset Column. Next to the Type is Options, select the data set and next to Options is the field you want to use. What is going to happen is that on each record mockaroo creates it will randomly select an uid for each record. My new schema looks like this…

To download the data you need to repeat the same process as before. Select the amount records you need, json format, and click download. You can also click preview before you download to see how your data will look like.

Pushing events node to Firebase

To push your new data to Firebase is the same process as before just make sure to have a reference to the correct node before you push your data.

let events = firebase.database().ref('events');
$.ajax({
  url: '../events.json'
}).done(data => {
  data.forEach(item => {
    let newPostKey = events.push().getKey();
    item.uid = newPostKey;
    events.child(newPostKey).set(item);
  });
});
Enter fullscreen mode Exit fullscreen mode

The event’s node looks like this…

NICE!!! Now I have a users node with the ugly_id inside each entry as the uid and I have an events node with the user’s name and uid on each event and randomly create by mockaroo. This is really handy for fast prototyping and have some data in the DOM.

At the time I’m writing this short tutorial, I’m part of the Nashville Software School community in Nashville, TN, and I thought that this would be helpful for students building their capstones. Please share with your fellow students if you find it helpful.

Discussion (0)