【发布时间】:2018-12-02 15:41:10
【问题描述】:
在将新数据添加到 Firestore 之前,我想检查数据库中是否存在相同类型的数据。如果已经存在数据意味着我想防止用户在数据库中输入重复数据. 在我的情况下,如果已经存在同一时间的预订,这就像预约,我想防止用户同时预订。我尝试使用查询功能,但它不能防止重复数据输入。有人请帮助我
private boolean alreadyBooked(final String boname, final String bodept, final String botime) {
final int[] flag = {0};
CollectionReference cref=db.collection("bookingdetails");
Query q1=cref.whereEqualTo("time",botime).whereEqualTo("dept",bodept);
q1.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (DocumentSnapshot ds : queryDocumentSnapshots) {
String rname, rdept, rtime;
rname = ds.getString("name");
rdept = ds.getString("dept");
rtime = ds.getString("time");
if (rdept.equals(botime)) {
if (rtime.equals(botime)) {
flag[0] = 1;
return;
}
}
}
}
});
if(flag[0]==1){
return true;
}
else {
return false;
}
}
【问题讨论】:
-
现在您已经添加了代码 sn-p,我可以看到您正在比较
rdept和botime。应该是rdept.equals(bodept)。 -
是的,我改变了它,但它仍然无法正常工作。它将所有数据插入数据库而不检查条件@whenthemorningcomes
标签: android firebase google-cloud-firestore