大佬教程收集整理的这篇文章主要介绍了如何在 Firestore 中检查查询?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
附上图片供 Firestore 参考
尝试检查 firestore 中的查询以了解用户是否已发送或收到请求,并可以相应地执行任务并更改按钮的文本。
firebaseFirestore.collection("users").document(userID).collection("request").whereEqualTo("userID",otherUserID).get().addOnCompleteListener(new OnCompleteListener<querySnapshot>() {
@OverrIDe
public voID onComplete(@NonNull Task<querySnapshot> task) {
if(task.issuccessful()){
List<documentSnapshot> document = task.getResult().getdocuments();
if(document.contains("received")){
current_state="req_received";
send.setText("Accept request");
}else if(document.contains("sent")){
current_state = "req_sent";
send.setText("Cancel request");
}
}
}
});
以下代码用于发送或取消请求,它工作正常,但是当我返回另一个活动并再次返回时,按钮的文本更改为发送请求,该请求必须保留以取消请求,因为请求已经已发送。
send.setonClickListener(new VIEw.onClickListener() {
@OverrIDe
public voID onClick(VIEw v) {
if (userID.equals(otherUserID)) {
Toast.makeText(ProfileActivity.this,"CAnnot send request to your own",Toast.LENGTH_SHORT).show();
return;
}
//--------Not frIEnds.....
send.setEnabled(false);
if (current_state.equals("not_frIEnds")) {
FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
// String userID = firebaseAuth.getCurrentUser().getUID();
Map<String,String> profile = new HashMap<>();
profile.put("userID",otherUserID);
firebaseFirestore.collection("users").document(userID).collection("request")
.document("sent").set(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
@OverrIDe
public voID onComplete(@NonNull Task<VoID> task) {
if (task.issuccessful()) {
FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
// String userID = firebaseAuth.getCurrentUser().getUID();
Map<String,String> profile = new HashMap<>();
profile.put("userID",userID);
firebaseFirestore.collection("users").document(otherUserID).collection("request")
.document("received").set(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
@OverrIDe
public voID onComplete(@NonNull Task<VoID> task) {
if (task.issuccessful()) {
send.setEnabled(true);
current_state = "req_sent";
send.setText("Cancel request");
Toast.makeText(ProfileActivity.this,"success",Toast.LENGTH_SHORT).show();
}
}
});
} else {
Toast.makeText(ProfileActivity.this,"Failed sending request",Toast.LENGTH_SHORT).show();
}
}
});
}
//-------- Cancel request.......
if (current_state.equals("req_sent")) {
FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
Map<String,Object> profile = new HashMap<>();
// String userID = firebaseAuth.getCurrentUser().getUID();
profile.put("userID",FIEldValue.delete());
firebaseFirestore.collection("users").document(userID).collection("request")
.document("sent").update(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
@OverrIDe
public voID onComplete(@NonNull Task<VoID> task) {
if (task.issuccessful()) {
FirebaseFirestore firebaseFirestore = FirebaseFirestore.geTinstance();
// String userID = firebaseAuth.getCurrentUser().getUID();
Map<String,Object> profile = new HashMap<>();
profile.put("userID",FIEldValue.delete());
firebaseFirestore.collection("users").document(otherUserID).collection("request")
.document("received").update(profilE).addOnCompleteListener(new OnCompleteListener<VoID>() {
@OverrIDe
public voID onComplete(@NonNull Task<VoID> task) {
if (task.issuccessful()) {
send.setEnabled(true);
current_state = "not_frIEnds";
send.setText("Send request");
Toast.makeText(ProfileActivity.this,"request canceled","Failed request canceled",Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
}
}
正如您所确认的,如果错误仅在于比较部分,则像下面这样更改查询迭代可能会解决问题。
if (task.issuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if(document.getId().contains("received")){
current_state="req_received";
send.setText("Accept request");
// do pending stuffs or break the loop here
} else if(document.getId().contains("sent")){
current_state = "req_sent";
send.setText("Cancel request");
// do pending stuffs or break the loop here
}
}
}
参考:https://firebase.google.com/docs/firestore/query-data/queries
以上是大佬教程为你收集整理的如何在 Firestore 中检查查询?全部内容,希望文章能够帮你解决如何在 Firestore 中检查查询?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。