我想检索targetUser为 Johnny 的所有实例。
问题是Firebase不允许我将 .child()设置为空。
我该怎么做?
这是我的尝试-
readTargetUser = () => {
allHistory = [];
let myHistory = firebase
.database()
.ref("/locations")
.child()
.child("targetUser" === "Johnny")
.limitToLast(5);
myHistory.on("value", snapshot => {
console.log(
"Here I can see all info where the targetUser is Johnny",
snapshot
);
});
};
答案 0 :(得分:1)
您要查找的查询是在Firebase中完成的:
let myHistory = firebase
.database()
.ref("/locations")
.child("GG99AaPQjMhr0kT1xFkazjHMUrm1")
.orderByChild("targetUser")
.equalTo("Johnny")
.limitToLast(5);
有关更多信息,请参见ordering and filtering data上的Firebase文档。
如果您不知道GG99AaPQjMhr0kT1xFkazjHMUrm1
节点,则无法对targetUser
属性进行排序/过滤,因为Firebase数据库查询只能对位于以下位置的已知路径的属性进行排序每个孩子。
在这里查看我的答案:Firebase Query Double Nested
在这种情况下,典型的解决方案是仅在此用例中在数据库中创建所谓的反向索引。看起来像这样:
targetUsers: {
"Johnny": {
"GG99AaPQjMhr0kT1xFkazjHMUrm1_1577194136959": true,
".../...": true
}
}