android - 如何在循环中检索所有用户 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());
}
}
解决方案
推荐阅读
- linux - 使用 Find 命令剪切日期以选择日期
- dictionary - 固定大小的Golang并发访问映射/数组
- java - Jsp调用重定向管理
- python - getText() vs text() vs get_text()
- r - 当 data.table := 是最后一次操作时,R 函数不返回任何内容而不是 data.table 对象
- firebase - Firebase:无法配置触发器提供程序/cloud.storage/eventTypes/object.change
- javascript - 通过将它移动到应用程序的 src 文件夹中来读取库 redux
- sybase - 用char(10)存储日期,sybase 15.7为什么可以直接用<,>,=比较
- cucumber - 如何在新版本的黄瓜中将@cucumberoptions 写为 format="html:folderpath"?
- c# - ASP.NET Core 创建类实例,其中类可能使用 DI - 寻找模式建议