检查 firebase real-time 数据库中许多 child 个节点的值
Check for a value in many child nodes in firebase real-time database
如果 child 'contacts' 的值为 '9aIMkiMa0bSuMLjUk3R5bLpnoQS2',我想从 child 'group' 中检索文本 'Private Group'。我还想从 parent child 'questions posts' 的其他 child 节点检查相同的值。我一直在努力,但徒劳无功。这是我一直在使用的代码,但它只产生了错误。
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
)。没有办法用数据库查询来查询这个结构,你需要想出一个不同的数据结构来允许你的 use-case.
例如,如果您希望允许查找给定联系人 ID 的帖子,请考虑准确存储该关系:
"contactsToPosts": {
"$contactId": {
"$postId": true
}
}
有关此类数据建模的更多信息 trade-off,请参阅:
- Firebase Query Double Nested
如果 child 'contacts' 的值为 '9aIMkiMa0bSuMLjUk3R5bLpnoQS2',我想从 child 'group' 中检索文本 'Private Group'。我还想从 parent child 'questions posts' 的其他 child 节点检查相同的值。我一直在努力,但徒劳无功。这是我一直在使用的代码,但它只产生了错误。
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
)。没有办法用数据库查询来查询这个结构,你需要想出一个不同的数据结构来允许你的 use-case.
例如,如果您希望允许查找给定联系人 ID 的帖子,请考虑准确存储该关系:
"contactsToPosts": {
"$contactId": {
"$postId": true
}
}
有关此类数据建模的更多信息 trade-off,请参阅:
- Firebase Query Double Nested