Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Auto increment a value in firebase with javascript

Hello I'm working on some firebase project and i can save my datas via javascript into firebase database. But i couldn't figure it out to auto increment child value (my child value is duyuru, you can see the details in the below) of my database. I'm sharing my code in below can you give me hints to solve this issue.

  <script>

      // Initialize Firebase
      var config = {
        apiKey: "sample1",
        authDomain: "sample2",
        databaseURL: "sample3",
        storageBucket: "sample4",
      };


      firebase.initializeApp(config);
      var database = firebase.database();

     firebase.initializeApp(config);
  var database = firebase.database();

  function writeUserData(userId, name, email, imageUrl) {
  var kategori1 =  document.getElementById("kategori").value;
  var duyuru1 = document.getElementById("duyuru").value;
  var name1 = document.getElementById("name").value;
  var email1 = document.getElementById("email").value;
  var imageUrl1 = document.getElementById("imageUrl").value;





  firebase.database().ref(kategori1 +"/" + duyuru1).set({
    username: name1,
    email: email1,
    profile_picture : imageUrl1
  });
}

    </script>

and the out is like this

{
    "duyuru1": {
        "email": "kjfdlkl",
        "profile_picture": "dsfsd",
        "username": "meraha"
    }
}

I want to output data like;

{
    "duyuru1": {
        "email": "kjfdlkl",
        "profile_picture": "dsfsd",
        "username": "meraha"
    },

    "duyuru2": {
        "email": "kjfdlkl",
        "profile_picture": "dsfsd",
        "username": "meraha"
    }
}

duyuru (child value) section should be auto increment, That's what i wanted for. Thank you for your answers

like image 678
Esat kemal Ekren Avatar asked Aug 21 '16 15:08

Esat kemal Ekren


2 Answers

Firebase has no auto-incrementing keys, since those don't work well in massively multi-user systems where clients can be offline for prolonged periods.

Instead, Firebase has its own type of auto-generated keys called push IDs. These push IDs have the same important properties of sequences in many relational databases: they are ordered and sequential. But in addition, they can be calculated client-side, even when the client is not connected to the Firebase servers.

See the Firebase documentation on saving data in lists, this legacy blog post on why arrays don't work well in Firebase and this post on how push ids work.

like image 114
Frank van Puffelen Avatar answered Sep 30 '22 17:09

Frank van Puffelen


Firebase recommends using distributed counters: https://firebase.google.com/docs/firestore/solutions/counters

For the document that requires the counter, you'd initialize a subcollection of, say, 10 documents and run transaction increments on a random shard whenever you need a counter incremented.

Then you'd query the collection of shards and sum their counters.

like image 43
Gabriel Garrett Avatar answered Sep 30 '22 18:09

Gabriel Garrett