首页 > 解决方案 > 如何在循环中检索所有用户 ID 并比较子电子邮件然后停止循环,如果找到子电子邮件

问题描述

我想从 Users/{userID}/email 内的 Field 中找到给定的电子邮件,但随后我调用我的模型类 User 来获取所有 ID,我的活动被迷住了。

下面的代码用于查找存储在位置 Users/{UserId}/emailID 中的电子邮件 ID,但我无法比较所有用户 ID 以进入用户 ID 并查找应用程序用户提供的电子邮件

在此处输入图像描述

    private void performAddingMember(final String emailId) {

        final String useremail = emailId;

        final DatabaseReference databaseReference2 = FirebaseDatabase.getInstance().getReference().child(Constants.USERS_DB);
  

        try{
            DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();

            Query loopQuery = databaseReference.child(Constants.USERS_DB);
            loopQuery.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot2) {

                    if(snapshot2.exists()){
                        for (DataSnapshot postSnapshot : snapshot2.getChildren()) {
                            dismissProgressBar();

                            User user = postSnapshot.getValue(User.class);
                            final String usid2 = user.getUserID();

                            if(postSnapshot.child("kLYj0XDjgCQsQdhRx0fJPGSqfU13").child("email").getValue(String.class).equals(emailId)){
                                String name = postSnapshot.child(usid2).child("name").getValue(String.class);
                                String email = postSnapshot.child(usid2).child("email").getValue(String.class);
                                String uid = postSnapshot.child(usid2).child("userID").getValue(String.class);

                                Log.d("FindMyTag", "here is Key " +uid);
                                Log.d("FindMyTag", "here is Key for circle " +email);

                                final Members member = new Members(uid, name, email);

                                Circles circles = new Circles(CircleName, CircleDescription, CircleId);
                

                                HashMap<String, Object> mainHash = new HashMap<>();
                                mainHash.put(Constants.USERS_DB + "/" + uid + "/circles/" + CircleId, circles);
                                mainHash.put(Constants.CIRCLES_DB + "/" + CircleId + "/" + uid, member);


                                databaseReference
                                        .updateChildren(mainHash).addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        Log.d(TAG, "onComplete: added member to circle");
                                        dismissProgressBar();

                                        if (!membersArrayList.contains(member)) {
                                            membersArrayList.add(member);
                                            mMembersAdapter.notifyItemInserted(membersArrayList.size() - 1);
                                        }

                                    }
                                }).addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Log.d(TAG, "onFailure: " + e);
                                    }
                                });
                            }
                        }
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {

                    Log.d(TAG, "onCancelled: ");
                    dismissProgressBar();
                    Toast.makeText(MembersActivity.this, "Error while loading!", Toast.LENGTH_SHORT).show();
                }
            });

        }catch (Exception e){
            e.printStackTrace();
            Log.d("FindMyTag", "here is Key for circle " + e.getMessage());

        }
    }

标签: androidfirebasefirebase-realtime-databasefirebase-authentication

解决方案


推荐阅读