Android - Firebase 查询 startAt 未按预期工作 [英] Android - Firebase query startAt not working as expected
问题描述
我正在开发一个使用 Firebase 作为后端的 Android 应用.我是 Firebase 的新手并且遇到了一个问题,问题是当我尝试使用 startAt
查询搜索记录时,它返回的结果不以我输入的关键字开头.
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.
这是数据集
itemname
-KK8vI8A5BZZp3Xo3FpA
name: "abc"
-KK8w3uoJdJ0hBSrq0CS
name: "test"
-KKAC1o9Vazyg9JLtDoQ
name: "dude"
这是代码片段
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());
}
}
因此,当我搜索 abc
时,响应还包括 test
.也许我做错了什么,或者我走错了路.任何人都可以请指出我正确的方向.
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 我正在尝试使用 AutocompleteTextView
来搜索项目.
P.S I am trying to use an AutocompleteTextView
to search items.
谢谢
推荐答案
当您调用 orderByChild("name").startAt("abc")
时,数据库按名称属性对所有项目进行排序,跳过 abc
之前的那些,然后全部返回.
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.
如果您只想返回匹配 abc
的孩子,您可以使用 equalTo()
:
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 查询 startAt 未按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!