如何在Firebase数据库中的字符串中的任何位置进行搜索 - Android

时间:2017-09-17 07:07:49

标签: android firebase firebase-realtime-database

我在我的Android应用程序中实现了firebase实时数据库,一切都很好。我正在尝试添加一个搜索功能,我能够只用起始字匹配搜索数据库。 下面是我的数据库快照:

enter image description here

我正在查询movieName。现在我能够搜索查询字符串是否为Pets / Pe / pet。但是当我搜索动物时,我得到零结果。所以,基本上我正在寻找的是在字符串中的任何地方用查询文本搜索数据库。即,我应该能够搜索动物/和/宠物,并且应该得到包含搜索查询的结果。

到目前为止,我的代码如下。

mDatabaseReference.child("recent").getRef().orderByChild("movieName").startAt(query)
                    .endAt(query + "\uf8ff")

2 个答案:

答案 0 :(得分:4)

要在字符串中搜索字符串,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference animalsRef = rootRef.child("Animals");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Boolean found;
        String search = "Animals";
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String movieName = ds.child("movieName").getValue(String.class);
            found = movieName.contains(search);
            Log.d("TAG", movieName + " / " + found);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
animalsRef.addListenerForSingleValueEvent(eventListener);

如您所见,我们在数据库中查询所有电影名称,然后在movieName中搜索所需的字词。

答案 1 :(得分:0)

首先检查确切的孩子并初始化Firebase。看看这个答案, https://stackoverflow.com/a/34537728/5746625