gpt4 book ai didi

java - 在 Firebase 中进行循环查询

转载 作者:行者123 更新时间:2023-11-30 05:10:22 25 4
gpt4 key购买 nike

我有此代码,我的目标是像电子邮件 (Cc) 一样向我的收件人发送消息,但它不会循环,我有 2 个收件人,但我只能向第一个收件人发送消息。

DatabaseReference emailReference = firebaseDatabase.getReference(STUDENTS);
DatabaseReference carbonCopyReference = firebaseDatabase.getReference(STUDENTS);
emailReference.keepSynced(true);
carbonCopyReference.keepSynced(true);
List<String> carbonUids = new ArrayList<>();
carbonUids.clear();

for (int i = 0, emailsSize = emails.size(); i < emailsSize; i++) {

String email = emails.get(i);
Log.d("interactor--emails", email);
Query emailQuery = emailReference.orderByChild("email").startAt(email).endAt(email+UF8FF);
emailQuery.keepSynced(true);

emailQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
carbonUids.add(snapshot.getKey());
Log.d("interactor--carbonKey", String.valueOf(carbonUids));
for (String carbonUid : carbonUids) {

carbonCopyReference.child(carbonUid).child(CONSULTATION_REQUESTS).push().setValue(response);
}
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
listener.onFailure(databaseError.getMessage());
}
});
if (i == (emails.size()-1)){
listener.onSuccess("Request Sent");
context.startActivity(new Intent(context, ConsultDepartmentsActivity.class));
((Activity) context).finish();
((Activity) context).overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
}

第一个收件人有 2 条记录,而没有记录发送给第二个。 (我仍然没有 10 个声誉点来发布图像)

第一个收件人有 2 条记录 -

2 records in first recipient

具有开放详细信息(例如电子邮件、fName)的 child 是我的目标收件人

具有开放详细信息(电子邮件、fName、lastName)的 child -

Child with open details (email, fName, lastName)

我看到了这段代码,但我不知道如何在 Java 中做到这一点。这至少在 Java 中可能或可行吗?

for (var each = 0; each < alumAroundId.length; each++) { 
console.log("outside of rootRef", each);
(function(each){ rootRef.child('users').child(alumAroundId[each].key).once('value', function (eventSnap)
{
console.log(each, "inside the rootRef is off"); var thisUser = eventSnap.val(); thisUser.distance = alumAroundId[each].distance; $scope.allAlumAround.push(thisUser);
});
})(each);
}

最佳答案

您的代码中的问题是您在将元素添加到同一列表的同时迭代 carbonUids 列表。要解决这个问题,您需要像这样从另一个 for 循环中取出那个 for 循环:

emailQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
carbonUids.add(snapshot.getKey());
Log.d("interactor--carbonKey", String.valueOf(carbonUids));

}

for (String carbonUid : carbonUids) {
carbonCopyReference.child(carbonUid).child(CONSULTATION_REQUESTS).push().setValue(response);
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
listener.onFailure(databaseError.getMessage());
}
});

关于java - 在 Firebase 中进行循环查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com