我目前正在开发一个由FIREBASE支持的Android项目。当我在SQL中执行类似于select语句的查询时,它不会给我预期的结果。
我的FIREBASE数据库如下所示:
我使用的代码如下:
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
是我从上一个活动获得的字符串变量。
我的DiscussionPostReadModel.java
看起来像这样:
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;
}
}
我实际上需要系统只获取 discussionName 等于变量discussion_name_from_bundle
的节点。相反,它返回给我在FIREBASE数据库中 discussionForumPost 中找到的所有孩子。
请帮助我执行仅检索满足相等条件的子项的功能。提前谢谢。
答案 0 :(得分:0)
要仅检索一个结果,您还需要使用limitToFirst(wantedNumberOfResults)方法。
你会像这样实现它:
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
}