J'essaie de créer une application où je peux obtenir / définir des données dans des comptes d'utilisateurs spécifiques et j'ai été tenté par Firebase.
Le problème que j'ai est que je ne sais pas comment cibler des données d'utilisateurs spécifiques lorsque ma structure ressemble à ceci:
online-b-cards
- users
- InnROTBVv6FznK81k3m
- email: "hello@hello"
- main: "Hello world this is a text"
- name: "Alex"
- phone: 12912912
J'ai regardé autour de moi et je ne trouve vraiment rien sur la façon d'accéder aux données individuelles et encore moins quand on leur donne un hachage aléatoire comme identifiant.
Comment dois-je procéder pour récupérer les informations des utilisateurs individuels en fonction de leur nom? S'il y a une meilleure façon de faire cela, dites-le moi!
firebase
firebase-realtime-database
Richard Bamford
la source
la source
Réponses:
Auparavant, Firebase vous demandait de générer vos propres index ou de télécharger toutes les données à un emplacement pour rechercher et récupérer des éléments correspondant à un attribut enfant (par exemple, tous les utilisateurs avec
name === "Alex"
).En octobre 2014, Firebase a déployé une nouvelle fonctionnalité de requête via la
orderByChild()
méthode, qui vous permet d'effectuer ce type de requête rapidement et efficacement. Voir la réponse mise à jour ci-dessous.Lorsque vous écrivez des données sur Firebase, vous disposez de quelques options différentes qui reflètent différents cas d'utilisation. À un niveau élevé, Firebase est un magasin de données NoSQL à structure arborescente et fournit quelques primitives simples pour gérer des listes de données:
Écrivez dans Firebase avec une clé unique et connue:
Ajouter aux listes avec une clé générée automatiquement qui triera automatiquement par heure écrite:
Écoutez les modifications des données par leur chemin unique et connu:
Filtrer ou ordonner les données dans une liste par clé ou valeur d'attribut :
Avec l'ajout de
orderByChild()
, vous n'avez plus besoin de créer votre propre index pour les requêtes sur les attributs enfants! Par exemple, pour récupérer tous les utilisateurs avec le nom «Alex»:Ingénieur chez Firebase ici. Lorsque vous écrivez des données dans Firebase, vous disposez de quelques options différentes qui reflètent différents cas d'utilisation d'application. Puisque Firebase est un magasin de données NoSQL, vous devrez soit stocker vos objets de données avec des clés uniques afin de pouvoir accéder directement à cet élément, soit charger toutes les données à un emplacement particulier et parcourir chaque élément pour trouver le nœud que vous recherchez . Voir Écriture de données et gestion de listes pour plus d'informations.
Lorsque vous écrivez des données dans Firebase, vous pouvez soit des
set
données en utilisant un chemin unique et défini (c'est-à-direa/b/c
), soit despush
données dans une liste, ce qui générera un identifiant unique (c'est-à-direa/b/<unique-id>
) et vous permettra de trier et d'interroger les éléments de cette liste par heure . L'identifiant unique que vous voyez ci-dessus est généré en appelantpush
pour ajouter un élément à la liste à l'adresseonline-b-cards/users
.Plutôt que d'utiliser
push
ici, je recommanderais d'utiliserset
et de stocker les données de chaque utilisateur à l'aide d'une clé unique, telle que l'adresse e-mail de l'utilisateur. Ensuite, vous pouvez accéder directement aux données de l'utilisateur en accédant àonline-b-cards/users/<email>
via le SDK Firebase JS. Par exemple:Notez que puisque Firebase n'autorise pas certains caractères dans les références (voir Création de références ), nous supprimons le
.
et le remplaçons par un,
dans le code ci-dessus.la source
orderByChild
fonctionnalité. Étant donné que cette réponse apparaît assez souvent comme une réponse pertinente / connexe, les gens sont tenus de la regarder et devraient être conscients des nouvelles fonctionnalités de requête.Vous pouvez récupérer les détails par le code suivant.
la source
Je pense que la meilleure approche est de définir les identifiants des utilisateurs en fonction de l'objet auth fourni par Firebase. Lorsque je crée mes utilisateurs, je fais:
Cet identifiant provient de:
Les services d'authentification Firebase garantiront toujours qu'un identifiant unique parmi tous leurs fournisseurs sera défini à uid. De cette façon, vous aurez toujours le auth.uid et pourrez facilement accéder à l'utilisateur souhaité pour le mettre à jour, comme:
la source
C'était une paraphrase d'un article qui m'a aidé en essayant d'accéder à l'identifiant unique généré automatiquement. Accédez aux identifiants uniques Firebase dans ng-repeat à l'aide de la synchronisation implicite angularFire
Merci, Bennlich (source):
Firebase se comporte comme un objet javascript normal. L'exemple ci-dessous peut peut-être vous mettre sur la bonne voie.
Edit: Pas sûr à 100% du résultat souhaité, mais voici un peu plus qui pourrait déclencher un moment `` aha ''. Cliquez sur la clé à laquelle vous essayez d'accéder directement dans votre tableau de bord Firebase. De là, vous pouvez utiliser quelque chose comme:
la source
Voici comment accéder aux clés uniques générées automatiquement dans Firebase: structure de données : - OnlineBcards - UniqueKey
la source
Le moyen le plus simple est d'arrêter d'utiliser le
.push(){}
fonction qui générera cette clé aléatoire. Mais utilisez plutôt la
.update(){}
fonction où vous pouvez spécifier le nom de l'enfant au lieu d'avoir la clé aléatoire.la source
Récupération des données:
Dans votre base de données, vous utilisez un identifiant aléatoire généré à l'aide de
push()
, donc si vous souhaitez récupérer les données, procédez comme suit:Utilisation de Firebase dans l'application Android:
Utilisation de Firebase en Javascript:
Ici, vous avez l'instantané (emplacement des données),
users
puis vous bouclez à l'intérieur de tous les identifiants aléatoires et récupérez les noms.Récupération des données pour un utilisateur spécifique:
Maintenant, si vous souhaitez récupérer des informations pour un utilisateur spécifique uniquement, vous devez ajouter une requête:
Utilisation de Firebase dans l'application Android:
Utiliser Firebase avec Javascript
Utiliser
orderByChild("name").equalTo("Alex")
revient à direwhere name="Alex"
qu'il récupérera les données liées à Alex.Meilleur moyen:
La meilleure chose à faire est d'utiliser l'authentification Firebase, générant ainsi un identifiant unique pour chaque utilisateur et en l'utilisant à la place d'un identifiant aléatoire
push()
, de cette façon, vous n'avez pas à parcourir tous les utilisateurs puisque vous avez l'identifiant et pouvez facilement y accéder.Tout d'abord, l'utilisateur doit être connecté, puis vous pouvez récupérer l'identifiant unique et attacher un écouteur pour récupérer les autres données de cet utilisateur:
Utilisation de Firebase avec Android:
Utilisation de Firebase avec Javascript:
la source
Le moyen le plus simple et le meilleur pour ajouter un identifiant unique à votre base de données en fonction de l'utilisateur authentifié est le suivant:
L'interface utilisateur sera un identifiant unique pour un e-mail / utilisateur authentifié spécifique
la source