当子节点的父节点未知时从Firebase检索数据

我正在构建一个应用程序,您可以发送和获取朋友请求。 数据库的结构如下:

链接到图像

现在,当有人向您发送带有addValueEventListener的朋友请求时,我想构建一个“警报function”,以便我可以看到当前用户是否在数据库中有“已收到”。 就像是:

mFriendRequestDatabase = FirebaseDatabase.getInstance().getReference().child("Friend_req"); mCurrent_user = FirebaseAuth.getInstance().getCurrentUser(); String current_user_id = mCurrent_user.getUid(); mFriendRequestDatabase.child(current_user_id).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { } @Override public void onCancelled(DatabaseError databaseError) { } }); 

问题是我无法看到当前用户是否有“已发送”或“收到”,因为我不知道发送请求的人的ID。 dataSnapshot.child(???)。child(“sent”或“recieved”)

我该如何解决这个问题?

您可以通过查询获得其中的一些内容,但由于您需要为每个用户定义索引,因此保持性能受到控制将非常棘手。 对于这方面的一些问题,请在此处查看我的答案。

更好的方法是将请求分成两个单独的列表:已发送的列表和已接收的列表。 例如

 friend_requests uidOfChristoffer received uidOfPuf: true sent: uidOfSomeoneElse: true uidOfPuf sent uidOfChristoffer: true uidOfSomeoneElse received uidOfChristoffer: true 

现在,您可以通过阅读/friend_requests/theirUid/received来专门获取任何人收到的内容。 这是一种多对多关系的更具体的方法,所以我也建议在这里阅读我的答案。