131 votes

Obtenir les utilisateurs par leur propriété en utilisant Firebase

C'est probablement une question de noob, mais voilà... Je suis en train de créer une application où je peux obtenir/mettre des données à des utilisateurs spécifiques des comptes et j'ai été tenté par Firebase.

Le problème que je rencontre est que je ne sais pas comment faire pour cibler des utilisateurs de données lors de ma structure ressemble à ceci:

My data structure

J'ai regardé autour de moi et je ne peux pas vraiment trouver quelque chose sur la façon accès à des données individuelles a fortiori quand ils sont donnés quelques aléatoire de hachage comme leur pièce d'identité.

Comment pourrais-je aller sur l'accaparement des données sur les utilisateurs individuels en fonction de leur nom? Si il y a une meilleure manière de faire ceci s'il vous plaît dites-moi!

Cheers - Richard

157voto

Rob DiMarco Points 3852

Ingénieur Firebase ici. Lors de l'écriture de données dans Firebase, vous avez quelques options différentes qui reflètent les différentes applications des cas d'utilisation. Depuis Firebase est une banque de données NoSQL, vous aurez besoin de stocker vos objets de données avec les clés uniques, de sorte que vous pouvez accéder directement à cet élément, ou de charger toutes les données à un emplacement particulier et en boucle sur chaque élément afin de trouver le nœud que vous cherchez. Voir l'Écriture des Données et la Gestion de Listes pour plus d'informations.

Lorsque vous écrivez des données dans Firebase, vous pouvez soit set de données à l'aide d'un unique chemin d'accès défini par (c - a/b/c), ou push des données dans une liste, ce qui va générer un id unique (c'est à dire a/b/<unique-id>) et vous permettent de trier et d'interroger les éléments de la liste par le temps. L'identifiant unique que vous voyez ci-dessus est générée par l'appel de push afin d'ajouter un élément à la liste à l' online-b-cards/users.

Plutôt que d'utiliser push ici, je vous conseille d'utiliser l' set, et le stockage de données pour chaque utilisateur à l'aide d'une clé unique, tel que l'adresse électronique de l'utilisateur. Vous pouvez accéder aux données de l'utilisateur directement en accédant à" online-b-cards/users/<email> via le Firebase JS SDK. Par exemple:

function escapeEmailAddress(email) {
  if (!email) return false

  // Replace '.' (not allowed in a Firebase key) with ',' (not allowed in an email address)
  email = email.toLowerCase();
  email = email.replace(/\./g, ',');
  return email;
}

var usersRef = new Firebase('https://online-b-cards.firebaseio.com/users');
var myUser = usersRef.child(escapeEmailAddress('hello@hello.com')) 
myUser.set({ email: 'hello@hello.com', name: 'Alex', phone: 12912912 });

A noter que depuis Firebase ne permettent pas de certains caractères dans les références (voir la Création de Références), nous supprimons l' . et de le remplacer avec un , dans le code ci-dessus.

9voto

Tandis que le Firebase Ingénieur a été approfondie et bien évidemment des liens de retour de l'API, j'ai à dire, c'était un peu hors sujet. Le posteur d'origine n'était pas à la recherche d'une régurgitation de l'API, il me demandait ce que je pensais être une simple question, à laquelle j'ai moi-même été chercher la solution, car il n'est pas évident à partir de la documentation OU dans la description gentiment proposé ci-dessus. Bien sûr, il contribue à l'écrire d'une certaine façon, mais ce n'est pas fournie dans un exemple sur la Firebase site web.

Je suis fan de firebase, oui il peut encore être écrasante, la quantité d'informations présentées pour des tâches simples (de mon point est faite à partir de la réponse ci-dessus), le temps de l'API descriptions souvent obscurcir ce qui s'avère généralement être assez simple de répondre.

D'autant que ses un NOSQL collection, on devrait être en mesure d'accéder au champ avec "." la notation de l'objet.propriété, par exemple. Cependant, comme c'est le cas de l'id aléatoire champs ne permettent pas de l'utiliser pour accéder aux données. Ces champs sont créés peu importe la façon dont le schéma est créé.

Je voudrais savoir comment faire pour obtenir l'accès à un sepcific objet avec quelque chose qui ressemble à un $get(id) ou $get(object.de propriété) sur la collection (dans ce cas les utilisateurs). Dans la documentation que je suis censé être en mesure d'obtenir un utilisateur dans l'exemple en utilisant l'url du point de terminaison avec '/users/#nom d'utilisateur et pourtant cela ne fonctionne pas comme il y a un id (index) pour mettre, donc il est /users/id/#nom d'utilisateur qui ne fonctionnent pas si vous ne connaissez pas l'id.

@Rob DiMarco, Il a posé la question au départ, c'était l'objet de la question, cependant, vous semblez comprendre qu'il a demandé quelque chose d'autre? Votre réponse n'était pas lié à la question, certains post mixups ici?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X