Firebase: comment générer un ID numérique unique pour la clé?

J'ai besoin d'ID numériques pour la lisibilité humaine. Comment puis-je l'obtenir dans Firebase?

je veux un ID numérique pour les clés, par exemple "000000001", "000000002","00000003","00000004".

la raison pour laquelle j'en ai besoin c'est parce que ces ID deviendront L'ID de l'objet permanent à la fois en ligne et hors ligne. Je veux que les utilisateurs puissent parcourir cette page d'objet en tapant URL "/objects/00000001" sans effort.

je demande ici, parce que je veux savoir si cela peut être fait sans en utilisant .priority, sous-propriétés, etc. Je suppose que set méthode peut le faire en quelque sorte. Si ce n'est pas possible, dites-moi simplement non, je peux accepter cette réponse.

42
demandé sur meagar 2015-03-03 03:38:56

2 réponses

je suggère de lire la documentation de la base de données Firebase. Plus précisément, voir le Sauvegarde Des Données portion du Guide Web JavaScript de Firebase.

dans le guide:

Obtenir l'ID Unique Généré par push()

Calling push () retournera une référence au nouveau chemin de données, que vous pouvez utiliser pour obtenir la valeur de son ID ou de ses données. Le code suivant donnera les mêmes données que ci-dessus exemple, mais maintenant nous aurons accès à l'ID push unique qui a été généré

// Generate a reference to a new location and add some data using push()
var newPostRef = postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
// Get the unique ID generated by push() by accessing its key
var postID = newPostRef.key;

Source:https://www.firebase.com/docs/web/guide/saving-data.html

  • un push génère un nouveau chemin de données, avec un timestamp serveur comme key. Ces touches -JiGh_31GA20JabpZBfa, donc pas numérique.
  • Si vous vouliez faire un numérique uniquement ID, vous feriez qu'un paramètre de l'objet pour éviter d'écraser le clé générée.
    • les clés (les chemins des nouvelles données) sont garanties d'être uniques, donc il n'y a pas de raison de les écraser avec une clé numérique.
    • vous pouvez à la place définir L'ID numérique comme un enfant de l'objet.
    • vous pouvez alors interroger des objets par cet enfant ID en utilisant Firebase Queries.

dans le guide:

en JavaScript, le modèle d'appel push() et puis appeler immédiatement set() est si courant que nous vous laissons les combiner en passant simplement les données à définir directement à push () comme suit. Les deux opérations d'écriture suivantes permettront de sauvegarder les mêmes données dans Firebase:

// These two methods are equivalent
postsRef.push().set({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});

Source:https://www.firebase.com/docs/web/guide/saving-data.html

54
répondu Sinan Bolel 2016-11-07 06:21:13

comme expliqué ci-dessus, vous pouvez utiliser le push id par défaut de la base de données Firebase.

si vous voulez quelque chose de numérique vous pouvez faire quelque chose basé sur l'horodatage pour éviter les collisions

f.e. quelque chose basé sur la date,l'heure,la deuxième,ms, et certains aléatoire int à la fin

01612061353136799031

Qui se traduit par:

016-12-06 13:53:13:679 9031

vous pouvez également faire une transaction qui augmente le numéro d'identification, et sur le succès vous aurez un numéro consécutif unique pour cet utilisateur. Cela peut être fait du côté du client ou du serveur.

(https://firebase.google.com/docs/database/android/read-and-write)

4
répondu htafoya 2016-12-07 19:37:31