Bevor ich neue Daten in den Firestore einfüge, möchte ich überprüfen, ob bereits Daten der gleichen Art in der Datenbank vorhanden sind oder nicht. Wenn bereits Daten vorhanden waren, möchte ich verhindern, dass der Benutzer doppelte Daten in die Datenbank eingibt. In meinem Fall ist es wie eine Terminbuchung, wenn bereits eine Buchung für die gleiche Zeit besteht. Ich möchte verhindern, dass Benutzer zur gleichen Zeit buchen. Ich habe versucht, die Abfragefunktion zu verwenden, aber es verhindert nicht, dass doppelte Daten eingegeben werden
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;
}
}
Nachdem Sie nun das Code-Snippet hinzugefügt haben, kann ich sehen, dass Sie vergleichen
rdept
mitbotime
. Es sollte seinrdept.equals(bodept)
.– Jay
23. Juni 2018 um 11:20 Uhr
Ja, ich habe das geändert, aber es funktioniert immer noch nicht. Es fügt alle Daten in die Datenbank ein, ohne die Bedingung @whenthemorningcomes zu überprüfen
– Ragavendra Vignesh
23. Juni 2018 um 14:47 Uhr