Android - Firebase查询开始不按预期工作 [英] Android - Firebase query startAt not working as expected
问题描述
我正在开发一个使用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屋!