2017-03-11 8 views
0

Ich arbeite derzeit an einem Android-Projekt von FIREBASE unterstützt. Wenn ich eine SQL-Abfrage ähnlich der select-Anweisung durchführe, erhalte ich das gewünschte Ergebnis nicht.Android: Suchanfrage in Firebase

My Firebase Datenbank sieht wie folgt aus:

enter image description here

Der Code, den ich verwendet habe, ist wie folgt:

ref = FirebaseDatabase.getInstance().getReference().child("DiscussionForumPosts"); 
    ref.orderByChild("discussionName").equalTo(discussion_name_from_bundle) 
    .addChildEventListener(new ChildEventListener() { 

     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

      DiscussionPostReadModel model = dataSnapshot.getValue(DiscussionPostReadModel.class); 
     } 
     //other predefined methods 
} 

discussion_name_bundle ist eine String-Variable, die ich aus der vorherigen Aktivität erhalten.

Mein sieht DiscussionPostReadModel.java wie folgt aus:

public class DiscussionPostReadModel { 
public String discussionName, discussionMessage, userName; 

public DiscussionPostReadModel(){} 

public DiscussionPostReadModel(String discussionName, String discussionMessage, String userName){ 
    this.discussionName = discussionName; 
    this.discussionMessage = discussionMessage; 
    this.userName = userName; 
} 

public String getDiscussionName(){ 
    return discussionName; 
} 
public String getDiscussionMessage(){ 
    return discussionMessage; 
} 
public String getUserName(){ 
    return userName; 
} 
} 

Ich brauche eigentlich das System nur die Knoten discussionName gleich der Variable discussion_name_from_bundle dessen zu holen. stattdessen gibt es mir alle Kinder zurück, die in discussionForumPost in der FIREBASE-Datenbank gefunden werden.

Bitte helfen Sie mir die Funktionalität des Abrufs nur der Kinder, die die Gleichheitsbedingung erfüllt. Vielen Dank im Voraus.

Antwort

0

Um nur ein Ergebnis abzurufen, müssen Sie auch die Methode limitToFirst (fasteNumberOfResults) verwenden.

Sie würde es so implementieren:

ref = FirebaseDatabase.getInstance().getReference().child("DiscussionForumPosts"); 
      ref.orderByChild("discussionName").equalTo(DiscussionForumPosts).limitToFirst(1).addChildEventListener(new ChildEventListener() { 

    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 

     DiscussionPostReadModel model = dataSnapshot.getValue(DiscussionPostReadModel.class); 
    } 
    //other predefined methods 
}