如何解决检查Firebase实时数据库中许多子节点中的值
如果子“联系人”的值为“ 9aIMkiMa0bSuMLjUk3R5bLpnoQS2”,我想从子“组”检索文本“私人组”。我还想从父子级“ questions posts”的其他子节点中检查相同的值。我一直在努力,但徒劳无功。这是我一直在使用的代码,但是只会产生错误。
final DatabaseReference groupsRef = FirebaseDatabase.getInstance().getReference().child("questions posts");
Query query = groupsRef.orderByChild("group").orderByChild("contacts");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
arrayList.clear();
if (snapshot.exists() && snapshot.hasChild(onlineUserId)){
arrayList.add(groupsRef.getKey().toString());
arrayAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
解决方法
Firebase查询在平面节点列表上操作,并且只能包含一个未知密钥。
据我所知,至少有两个级别的未知键(-MH...Ez12
和9alMk....QS2
),可能还有三个级别(Private Group
)。无法通过数据库查询来查询此结构,您将需要提出不同的数据结构以允许您的用例。
例如,如果要允许查找给定联系人ID的帖子,请考虑完全存储该关系:
"contactsToPosts": {
"$contactId": {
"$postId": true
}
}
有关此类数据建模权衡的更多信息,请参见:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。