Android - Firebase搜索过滤

问题描述 投票:0回答:2

我正在开发一个应用程序,它将帮助用户搜索书籍并下载由其他用户上传的书籍作为帖子的一种形式。


为了首先下载书籍,用户应该根据Title等属性进行搜索。

enter image description here


符合用户要求的帖子应显示在firebase-UI recyclerview中。


这是我的Firebase数据结构:

enter image description here


我想要一个示例代码,它将创建一个Query,它返回方便帖子的Id,例如ImgBRr2YFYfAu1WwENS1Ucj6jz13_1514813350760。


请帮我解决问题,欢迎任何建议和想法

android firebase firebase-realtime-database firebaseui
2个回答
1
投票

这是你能做的,

按语言搜索,然后按标题和作者过滤

public void search(String languangeSearchString, String title, String author){  
        FirebaseDatabase.getInstance().getReference().child("Posts").equalTo("language").startAt(languangeSearchString).addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                 String id = dataSnapshot.getKey();
                if(dataSnapshot.child("title").exists() && dataSnapshot.child("author").exists()){
                    if(dataSnapshot.child("title").getValue(String.class).equals(title) && dataSnapshot.child("author").getValue(String.class).equals(author)){
                        //Here are the results
                    }
                }           
            }

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

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

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

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

}

0
投票

要在firebase-database上进行搜索,我们通常使用orderBy()。喜欢

firebaseDatabase.getReference("Posts").child("postId")
                        .orderBy("authorId")

但它不可能使用多个orderBy()像,

firebaseDatabase.getReference("Posts").child("postId")
                     .orderBy("authorId")
                     .orderBy("title")     // this will throw an error
                     .orderBy("language") 

所以你必须只在一个child-node上进行搜索。有关更多信息,请查看此Query based on multiple where clauses in Firebase

© www.soinside.com 2019 - 2024. All rights reserved.