如何检查多个孩子下是否有同一个孩子

时间:2021-03-12 20:41:19

标签: android firebase

不确定如何准确表达这个问题,但我正在尝试制作一个功能,该功能将查看数据库并查看是否有两个或更多用户喜欢同一件事,然后在他们之间开始聊天。我遇到的问题是第二个 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) {

            }
        });
    }```

1 个答案:

答案 0 :(得分:0)

这最终成为一个逻辑错误。将 childevenlistener 更改为 singlevalueeventlistener 并将其设置为在数据库中查找更具体的变量。现在它就像一个魅力。