web-dev-qa-db-fra.com

Incrémenter automatiquement une valeur dans Firebase avec javascript

Bonjour, je travaille sur un projet Firebase et je peux enregistrer mes données via javascript dans la base de données Firebase. Mais je ne pouvais pas le comprendre pour incrémenter automatiquement la valeur enfant (ma valeur enfant est duyuru, vous pouvez voir les détails ci-dessous) de ma base de données. Je partage mon code ci-dessous, pouvez-vous me donner des conseils pour résoudre ce problème.

  <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>

et la sortie est comme ça

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

Je veux sortir des données comme;

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

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

la section duyuru (valeur enfant) doit être incrémentée automatiquement, c'est ce que je voulais. Merci pour vos réponses

8
Kemal Ekren

Firebase n'a pas de clés à incrémentation automatique, car celles-ci ne fonctionnent pas bien dans les systèmes massivement multi-utilisateurs où les clients peuvent être hors ligne pendant de longues périodes.

À la place, Firebase possède son propre type de clés générées automatiquement appelées Push ID. Ces ID Push ont les mêmes propriétés importantes de séquences dans de nombreuses bases de données relationnelles: ils sont ordonnés et séquentiels. Mais en plus, ils peuvent être calculés côté client, même lorsque le client n'est pas connecté aux serveurs Firebase.

Voir documentation Firebase sur l'enregistrement des données dans des listes , cet héritage article de blog sur les raisons pour lesquelles les tableaux ne fonctionnent pas bien dans Firebase et ceci article sur le fonctionnement des identifiants Push .

18
Frank van Puffelen

Firebase recommande d'utiliser des compteurs distribués: https://firebase.google.com/docs/firestore/solutions/counters

Pour le document qui nécessite le compteur, vous initialisez une sous-collection de, disons, 10 documents et exécutez des incréments de transaction sur un fragment aléatoire chaque fois que vous avez besoin d'un compteur incrémenté.

Ensuite, vous interrogez la collection de fragments et additionnez leurs compteurs.

2
zavtra