Vous pouvez essayer de créer des identifiants uniques similaires à ce que la fonction push fait, mais cela semble être beaucoup de travail pour un faible gain quand il y a des outils intégrés dans Firebase pour commander des données. La réponse la plus simple consiste à définir une priorité sur chaque enregistrement à l'aide de l'horodatage du serveur.
ref.push({ ...data..., ".priority": Firebase.ServerValue.TIMESTAMP });
Pour en définir un dans le futur ou le passé, spécifiez l'horodatage manuellement.
ref.push({ ...data..., ".priority": timeInTheFuture });
.info/serverTimeOffset peut également être utile ici pour la latence de manipulation.
Pour créer ids push, vous feriez quelque chose de semblable à ce qui suit:
- Obtenez l'horodatage actuel et pad à une longueur fixe (soit 16 caractères)
- Append une série aléatoire de chiffres, comme un nombre aléatoire ou hachage, rembourré également à une longueur fixe
- Votre entrée va maintenant quelque chose comme ceci:
000128198239:KHFDBWYBEFIWFE
- Vous avez maintenant un identifiant lexicographique triables basé sur un horodatage qui est unique
est ici un utile discussion on sorting numbers lexicographically
Avez-vous regardé la documentation pour les [données ordonnées] (https://www.firebase.com/docs/web/guide/retrieving-data.html#section-ordered- données) et les priorités? Qu'avez-vous essayé? Qu'est-ce qui n'a pas fonctionné? – Kato
Je sais que je peux définir des horodatages personnalisés (passés/futurs) pour chaque donnée, puis définir des priorités avec chaque horodatage ([like this] (https://examples-sql-queries.firebaseio.com/messages)). Mais je me demandais si je pouvais mettre des clés pour commander les données et aussi faire un identifiant unique comme la méthode push(). Si la bonne façon est seulement de définir des horodatages personnalisés, est-il possible d'obtenir un horodatage à partir de l'ID unique défini par la méthode push()? Désolé, j'exagère peut-être pour réutiliser les données stockées ou éviter d'écrire des données répétitives. Mais je n'ai pas encore d'expérience en matière de dénormalisation des données. – Miguel