android - 如何检查 Firebase Firestore 重复条目是否已存在?
问题描述
当 FirebaseFirestore 中已存在文档时,我需要更新条目这是我的代码
call.enqueue(new Callback<DoctorsResponse>() {
@Override
public void onResponse(@NonNull Call<DoctorsResponse> call, @NonNull Response<DoctorsResponse> response) {
progressDialog.setTitle("Uploading...");
progressDialog.show();
if (response.isSuccessful()){
Log.e("@@Success", String.valueOf(response.body().getData()));
docDetailsList.addAll(response.body().getData().getMemberData());
MemberDatum memberDatum = new MemberDatum();
for (int i =0; i<response.body().getData().getMemberData().size(); i++){
String queryforbranch = FirebaseFirestore.getInstance().collection("BranchWiseList").document().getId();
memberDatum.setDoctorId(queryforbranch);
memberDatum.setMbbsCollegeName(docDetailsList.get(i).getMbbsCollegeName());
memberDatum.setMbbsYear(docDetailsList.get(i).getMbbsYear());
memberDatum.setId(docDetailsList.get(i).getId());
memberDatum.setWuid(docDetailsList.get(i).getWuid());
memberDatum.setDocName(docDetailsList.get(i).getDocName());
memberDatum.setDocFatherName(docDetailsList.get(i).getDocFatherName());
memberDatum.setDocbloodGroup(docDetailsList.get(i).getDocbloodGroup());
memberDatum.setDocAddress(docDetailsList.get(i).getDocAddress());
memberDatum.setDocDistrict(docDetailsList.get(i).getDocDistrict());
memberDatum.setDocState(docDetailsList.get(i).getDocState());
memberDatum.setDocPrimaryMob(docDetailsList.get(i).getDocPrimaryMob());
memberDatum.setDoctDesignation(docDetailsList.get(i).getDoctDesignation());
memberDatum.setDocEmail(docDetailsList.get(i).getDocEmail());
memberDatum.setRmcNumber(docDetailsList.get(i).getRmcNumber());
memberDatum.setImaMember(docDetailsList.get(i).getImaMember());
memberDatum.setDocPopularName(docDetailsList.get(i).getDocPopularName());
memberDatum.setRmcRegistrationDate(docDetailsList.get(i).getRmcRegistrationDate());
memberDatum.setDocDob(docDetailsList.get(i).getDocDob());
memberDatum.setBranch(docDetailsList.get(i).getBranch());
memberDatum.setDateOfMarriage(docDetailsList.get(i).getDateOfMarriage());
memberDatum.setDocCity(docDetailsList.get(i).getDocCity());
memberDatum.setDocSpeciality(docDetailsList.get(i).getDocSpeciality());
memberDatum.setDocgender(docDetailsList.get(i).getDocgender());
memberDatum.setDoctCategory(docDetailsList.get(i).getDoctCategory());
memberDatum.setDoctImage(docDetailsList.get(i).getDoctImage());
memberDatum.setEmployeetype(docDetailsList.get(i).getEmployeetype());
memberDatum.setHospitalAbout(docDetailsList.get(i).getHospitalAbout());
memberDatum.setHospitalAddress(docDetailsList.get(i).getHospitalAddress());
memberDatum.setHospitalDistrict(docDetailsList.get(i).getHospitalDistrict());
memberDatum.setHospitalEmail(docDetailsList.get(i).getHospitalEmail());
memberDatum.setHospitalImageOne(docDetailsList.get(i).getHospitalImageOne());
memberDatum.setHospitalImageTwo(docDetailsList.get(i).getHospitalImageTwo());
memberDatum.setHospitalImageThree(docDetailsList.get(i).getHospitalImageThree());
memberDatum.setHospitalImageFour(docDetailsList.get(i).getHospitalImageFour());
memberDatum.setHospitalImageFive(docDetailsList.get(i).getHospitalImageFive());
memberDatum.setHospitalImageSix(docDetailsList.get(i).getHospitalImageSix());
memberDatum.setHospitalName(docDetailsList.get(i).getHospitalName());
memberDatum.setHospitalPhone(docDetailsList.get(i).getHospitalPhone());
memberDatum.setHospitalSpecilities(docDetailsList.get(i).getHospitalSpecilities());
memberDatum.setHospitalState(docDetailsList.get(i).getHospitalState());
memberDatum.setHospitalWebsite(docDetailsList.get(i).getHospitalWebsite());
memberDatum.setIsIMAMember(docDetailsList.get(i).getIsIMAMember());
memberDatum.setHospitalWebsite(docDetailsList.get(i).getHospitalWebsite());
memberDatum.setAddSpecialityModels(docDetailsList.get(i).getAddSpecialityModels());
memberDatum.setOrganizationModels(docDetailsList.get(i).getOrganizationModels());
memberDatum.setSuperSpecialityModels(docDetailsList.get(i).getSuperSpecialityModels());
Log.e("@@Docname",docDetailsList.get(i).getDocName() );
FirebaseFirestore.getInstance().collection("BranchWiseList").document(memberDatum.getDoctorId()).set(memberDatum).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
progressDialog.dismiss();
} else {
Toast.makeText(ImportBranchWise.this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
});
当我再次点击 Api 时,我得到了具有不同文档 ID 的双重条目,它没有更新我已经尝试过更新查询,帮助我,我将不胜感激 StackOverflow 上的每一个回复,提前谢谢你
解决方案
你可以使用update
,而不是set
因为你总是使用 id 反正。
String queryforbranch = FirebaseFirestore.getInstance().collection("BranchWiseList").document().getId();
我不知道您执行此操作时会得到什么文件,但似乎每次都得到相同的文件。我相信您需要将文档的 ID 保存在其他地方,或者只是调用get()
而不是document()
获取集合中的所有文档。
例如:
FirebaseFirestore.getInstance().collection("BranchWiseList")
.get().addOnCompleteListener(task -> {
if(task.isSuccessful()){
QuerySnapshot querySnapshot = task.getResult();
assert querySnapshot != null;
for (DocumentSnapshot documentSnapshot:
querySnapshot.getDocuments()) {
documentSnapshot.getID()
// here you can get everything done with the id.
}
}
});
推荐阅读
- swift - 当计时器在后台到期时触发一个动作
- postgresql - 如何在 PostgreSQL 中将特定数字转移到日期?
- wordpress - 将整个网站(Wordpress)链接重定向到另一个网站,除了通过 htaccess 的 3 个链接
- reactjs - 单击按钮时反应js按钮隐藏
- c++ - config.h:libssh 示例中的 ssh_client 中没有这样的文件或目录
- laravel - 如何在 Laravel 6.9.0 的私有存储中在 iframe 中显示 pdf?
- c# - Hangfire“JobStorage.current”属性无法初始化?
- python - 像素坐标和颜色未显示
- flutter - 由于上述问题,无法构建插件 cloud_firestore。(构建发布 apk 时的问题)
- cordova - cordova-plugin-ionic-webview - 尽管有自动完成属性,但无法以 HTML 形式保存密码