【发布时间】:2019-12-25 13:49:11
【问题描述】:
当我使用 OrderByChild 或带有 startAt 或 equalTo 的键时,它返回错误值
这是equalTo
String diy = intent.getStringExtra(PARCELABLE_KEY);
Query qr = dr.child(AddDIYFragment.DIY_CHILD).orderByChild("title").equalTo(diy);
这是与 startAt 相关的
Query searchQueryNum2 = reference.child(AddDIYFragment.DIY_CHILD).orderByChild("title").startAt(text);
searchQueryNum2.addListenerForSingleValueEvent(this);
我尝试 orderByKey 但它也不起作用
编辑 JSON 树示例(已编辑但我可以添加更多)
{
"gg0" : {
"category" : "lifestyle",
"eq" : "SMTH",
"title" : "gg"
},
"hdhshs5" : {
"category" : "Sports",
"eq" : "hshsj",
"title" : "hdhshs"
},
"hdhshsjsjs6" : {
"category" : "Sports",
"eq" : "eooe",
"title" : "hdhshsjsjs"
},
"java1" : {
"category" : "Sports",
"eq" : "hshjs",
"title" : "java"
},
"jshsjs7" : {
"category" : "Sports",
"eq" : "hdhshsjjs",
"title" : "jshsjs"
},
"jsjsjsjs9" : {
"category" : "Sports",
"eq" : "hshshwhw",
"title" : "jsjsjsjs"
},
"papajs8" : {
"category" : "Sports",
"eq" : "hdhshhajasjjs",
"title" : "papajs"
},
"sjs4" : {
"category" : "Sports",
"eq" : "hdhs",
"title" : "sjs"
}
}
编辑 onDataChange:-
这是一个简单的开始
Query searchQueryNum2 = reference.child(AddDIYFragment.DIY_CHILD).orderByChild("title").startAt("gg");
Log.d(TAG, "query is made");
searchQueryNum2.addListenerForSingleValueEvent(this);
和 onDataChange
private ArrayList<Prod> list = new ArrayList<>();
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot temp : dataSnapshot.getChildren()) {
list.add(temp.getValue(Prod.class));
Log.d(TAG, "list added something " + list.get(list.size() - 1));
}
}
编辑 我将孩子设置为按 startat "gg" 排序,如您在顶部看到的,我们有 gg 但它也返回(hdhshs、java、jsjsjsjs、papajs、sjs 等)
【问题讨论】:
-
“返回错误值”是什么意思?期望值是多少?请将您的数据库结构添加为 JSON 文件或至少作为屏幕截图。
-
@AlexMamo 谢谢,我添加了 JSON 树示例
-
“返回错误值”是什么意思?期望值是多少?
-
@AlexMamo 我的意思是当我想要一个特定的标题来搜索它时它不会返回它返回错误的标题,就像你输入
reference.child(AddDIYFragment.DIY_CHILD).orderByChild("title").startAt(text);它返回 null 或者不是你想要的对象 -
向我们展示一个不使用变量的具体示例。使用硬编码值。
标签: android firebase-realtime-database