Disons que j'ai ces données sur ma Firebase:

https://mygame.firebaseio.com/player

{
  "player": {
    "bloodgulf01": {
      "username": "bloodgulf01",
      "uid": "twitter:102032",
      "level": 2,
      "map": 3,
      "x": 51,
      "y": 12
    },
    "damjanovic": {
      "username": "damjanovic",
      "uid": "github:77371",
      "level": 5,
      "map": 2,
      "x": 21,
      "y": 44
    }
  }
}

Comment pourrais-je rechercher par uid et obtenir ce résultat snapshot?

Voici ce que j'ai essayé:

new Firebase("https://mygame.firebaseio.com/player")
    .startAt(authData.uid)
    .endAt(authData.uid)
    .once('value', function(snap) {
       console.log('accounts matching UID of ' + authData.uid, snap.val())
    });

Ce qui renvoie: accounts matching UID of github:123456789 null malgré la présence du uid à l'intérieur de ces données de /player/ ...

1
Zeng Cheng 11 juil. 2015 à 23:54

2 réponses

Meilleure réponse

N'oubliez pas que tout dans Firebase est une URL. Vous pouvez donc simplement le faire pour obtenir les données souhaitées:

'https://mygame.firebaseio.com/player/' + uid
1
Chrillewoodz 11 juil. 2015 à 21:05

Trier par enfant sur lequel vous souhaitez filtrer, puis filtrer:

new Firebase("https://mygame.firebaseio.com/player")
  .orderByChild('uid')
  .equalTo(authData.uid)
  .once('child_added', function(snap) {
     console.log('account matching UID of ' + authData.uid, snap.val())
  });

Puisque vous n'attendez qu'un seul joueur, vous pouvez probablement vous en tirer avec once('child_added'. Si vous devez gérer potentiellement plusieurs joueurs avec le même uid, alors:

  .on('child_added', function(snap) {
     console.log('account matching UID of ' + authData.uid, snap.val())
  });

Ou

  .once('value', function(snap) {
     snap.forEach(function(child) {
       console.log('account matching UID of ' + authData.uid, child.val())
     });
  });

Je suis cependant avec Chrillewoodz sur la structure: je m'attendrais toujours à voir le uid comme la clé pour une collection d'utilisateurs. Vous pouvez rechercher le nom avec l'approche ci-dessus dans ce cas.

4
Frank van Puffelen 12 juil. 2015 à 01:00