我正在构建一个应用程序,您可以发送并获取朋友请求。数据库的结构如下:
现在,当有人向您发送带有addValueEventListener的朋友请求时,我想构建一个“警报功能”,以便我可以查看当前用户是否在数据库中有“已收到”。 类似的东西:
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”)
如何解决这个问题?
答案 0 :(得分:1)
你可以通过查询得到一些,但是要保持性能受到控制是很棘手的,因为你需要为每个用户定义一个索引。对于某些问题,请参阅我的答案here和here。
更好的方法是将请求分成两个单独的列表:已发送的列表和已收到的列表。 E.g。
friend_requests
uidOfChristoffer
received
uidOfPuf: true
sent:
uidOfSomeoneElse: true
uidOfPuf
sent
uidOfChristoffer: true
uidOfSomeoneElse
received
uidOfChristoffer: true
现在,您可以通过阅读/friend_requests/theirUid/received
专门获取任何人收到的内容。这是多对多关系中更具体的方法,所以我也建议在here上阅读我的答案。