不确定如何准确表达这个问题,但我正在尝试制作一个功能,该功能将查看数据库并查看是否有两个或更多用户喜欢同一件事,然后在他们之间开始聊天。我遇到的问题是第二个 if 似乎总是评估为 false 即使两条 Log 行显示变量具有正确的值。如果需要更多上下文或解释,请告诉我。非常感谢您的帮助,我一直在用这种方式挣扎太久。
private void isLikeMatch(String likeId, String groupId) {
DatabaseReference currentGroupConnectionsDb = groupsDb.child(groupId).child("users");
currentGroupConnectionsDb.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
if (snapshot.exists()){
String user = snapshot.getKey();
Log.d("user", user);
Log.d("Item", likeId);
if (snapshot.child(user).child("connections").child("yep").child(likeId).exists()){
Log.d("here?", "It saw a connection");
String key = FirebaseDatabase.getInstance().getReference().child("Chat").push().getKey();
groupsDb.child("matches").child(likeId).child(user).child("ChatId").setValue(key);
//usersDb.child(currentUId).child("connections").child("matches").child(snapshot.getKey()).child("ChatId").setValue(key);
}
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot snapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}```
答案 0 :(得分:0)
这最终成为一个逻辑错误。将 childevenlistener 更改为 singlevalueeventlistener 并将其设置为在数据库中查找更具体的变量。现在它就像一个魅力。