Comment récupérer un nœud spécifique de la base de données firebase dans android
Je suis en train d'utiliser Firebase dans mon application android. Je suis à la documentation suivante pour D'économie d' et récupérer
Mais l'Exemple de base de données(Dragon) qui est utilisé dans le tutoriel a la différente structure de ma base de données.
C'est mon code pour Pousser les données de firebase
Firebase myFirebaseRef = new Firebase("https://myfirebaseurl.firebaseio.com/android/saving-data/fireblog");
User userName = new User(socialNum, name, datofBirth, mob1, mob2, healthCondition);
Firebase usersRef = myFirebaseRef.child(name);
Map<String, User> users = new HashMap<String, User>();
users.put(name, userName);
myFirebaseRef.push().setValue(users);
qui créent format de base de données comme ceci
{
"android" : {
"saving-data" : {
"fireblog" : {
"-JiRtkpIFLVFNgmNBpMj" : {
"Name" : {
"birthDate" : "100",
"fullName" : "Name",
"healthCond" : "fyhft",
"mob1" : "5855",
"mob2" : "5858",
"socialNumber" : "100"
}
},
"-JiRv0RmHwWVHSOiZXiN" : {
"mast" : {
"birthDate" : "100",
"fullName" : "mast",
"healthCond" : "fyhft",
"mob1" : "5855",
"mob2" : "5858",
"socialNumber" : "100"
}
}
}
}
}
}
Je veux Récupérer des données à partir de firebase de telle sorte que, si j'ai mis "Nom complet" dans mes applications zone de recherche, il doit récupérer le nœud spécifique, afin que je puisse renseigner les informations dans la liste.
C'est de cette Façon que je suis en train de récupérer,
final String Find = find.getText().toString(); //Get text for search edit text box
Firebase myFirebaseRef = new Firebase("https://myfirebaseurl.firebaseio.com/android/saving-data/fireblog");
Query queryRef = myFirebaseRef.orderByChild("fullName");
//System.out.println(dataSnapshot.getKey() + "is" + value.get("socialNumber"));
System.out.println(Find);
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String previousChild) {
System.out.println(dataSnapshot.getValue());
Map<String,Object> value = (Map<String, Object>) dataSnapshot.getValue();
String name1 = String.valueOf(value.get("fullName"));
//System.out.println(dataSnapshot.getKey() + "is" + value.get("fullName").toString());
if (name1.equals(Find)){
System.out.println("Name" + value.get("fullName"));
}
else{
System.out.println("its is null");
}
}
mais Il retourne tous les nœuds,
02-19 12:18:02.053 8269-8269/com.example.nilesh.firebasetest I/System.out﹕ name
02-19 12:18:05.426 8269-8269/com.example.nilesh.firebasetest I/System.out﹕ {Name={socialNumber=100, birthDate=100, fullName=Name, mob1=5855, mob2=5858, healthCond=fyhft}}
02-19 12:18:05.426 8269-8269/com.example.nilesh.firebasetest I/System.out﹕ its is null
02-19 12:18:05.426 8269-8269/com.example.nilesh.firebasetest I/System.out﹕ {mast={socialNumber=100, birthDate=100, fullName=mast, mob1=5855, mob2=5858, healthCond=fyhft}}
02-19 12:18:05.426 8269-8269/com.example.nilesh.firebasetest I/System.out﹕ its is null
Comment puis-je Récupérer nœud spécifique de sorte que Si je entrer fullName = mat, il doit récupérer seulement le deuxième nœud avec tous les champs de ce nœud.
source d'informationauteur gooner
Vous devez vous connecter pour publier un commentaire.
Vous êtes en train de créer une requête dans cette ligne:
Comme que la requête commandes les nœuds enfants par leurs
fullName
valeur. Mais il ne sait pas encore la limite de ce que les nœuds enfants sont retournés.À limiter les nœuds, vous avez également à filtrer. par exemple:
Vous pouvez également obtenir une gamme de nœuds, par filtrage avec
startAt
et/ouendAt
au lieu deequalTo
.Comme Kato a commenté:
Que diriez-vous si nous voulons ajouter d'autres nœuds, sous la même clé, dont nous avons extrait des données à partir de ? Par exemple:
C'est une autre façon de récupérer les valeur unique de firebase base de données à l'aide de table de hachage.