Android - Firebase查询开始不按预期工作 [英] Android - Firebase query startAt not working as expected

查看:112
本文介绍了Android - Firebase查询开始不按预期工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个使用Firebase作为后端的Android应用程序。
我是Firebase的新手,遇到了一个问题,问题是当我尝试使用 startAt 查询来搜索记录时,它返回的结果不是从我输入的关键字开始。

以下是数据集

  itemname 
-KK8vI8A5BZZp3Xo3FpA
name:abc
-KK8w3uoJdJ0hBSrq0CS
name:test
-KKAC1o9Vazyg9JLtDoQ
name:dude

以下是代码snippit

  Query query = 。firebase.child(Constants.KEY_ITEM_NAME).orderByChild( 名称)startAt( ABC); 
query.addChildEventListener(new ChildEventListener(){
@Override $ b $ public void onChildAdded(DataSnapshot dataSnapshot,String s){
Iterator< DataSnapshot> i = dataSnapshot.getChildren()。 iterator();
while(i.hasNext()){
DataSnapshot d = i.next();
LOG(d.getKey(),d.getValue()。toString ));
}
}

所以当我搜索 abc 响应也包括 test
也许我做错了什么,或者我错了。 $ b $任何人都可以请指向正确的方向。

我试图使用 AutocompleteTextView 搜索项目。



谢谢

解决方案当您调用 orderByChild(name)。startAt(abc)数据库按名称命令所有项目y,跳过 abc 然后返回全部。



如果你只想找回孩子( abc ),您可以使用 equalTo()

  query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild(name)。equalTo(abc); 


I am developing an Android app using Firebase as backend. I am new to Firebase and stuck at a problem, well the problem is when I try to search for a record using startAt query, it returns results which does not starts with the keyword I enters.

Here's the data set

itemname
    -KK8vI8A5BZZp3Xo3FpA
       name: "abc"
    -KK8w3uoJdJ0hBSrq0CS
       name: "test"
    -KKAC1o9Vazyg9JLtDoQ
       name: "dude"

And here's the code snippit

Query query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild("name").startAt("abc");
        query.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Iterator<DataSnapshot> i = dataSnapshot.getChildren().iterator();
                while (i.hasNext()) {
                    DataSnapshot d = i.next();
                    LOG(d.getKey(), d.getValue().toString());
                }
            }

So when I search for abc the response also includes test. Maybe I am doing something wrong or I am going the wrong way. Could anyone please point me in right direction.

P.S I am trying to use an AutocompleteTextView to search items.

Thanks

解决方案

When you call orderByChild("name").startAt("abc") the database orders all items by their name property, skips the ones before abc and then returns them all.

If you're only looking to return children that match abc, you'd use equalTo():

query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild("name").equalTo("abc");

这篇关于Android - Firebase查询开始不按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆