Die React Firestore-Abfrage findet das Dokument beim ersten Durchlauf nicht
P粉463291248
P粉463291248 2023-09-12 10:49:36
0
1
682

Ich baue eine Web-App, in der Benutzer Termine mit Ärzten vereinbaren können, und ich möchte verhindern, dass Benutzer zur gleichen Zeit und am gleichen Datum Termine mit demselben Arzt vereinbaren, die andere Benutzer bereits angefordert haben. Ich verwende eine Firestore-Datenbank, um Termininformationen als Dokument zu speichern. Hier ist meine Funktion, die die Prüfung durchführt und sie an meine Firebase-Datenbank weiterleitet:

    const addAppointment = async (date: Date | null, speciality: string | undefined) => {
      const appointmentsRef = collection(db, "appointments");
      const q = query(appointmentsRef, where("speciality", "==", speciality), where("date", "==", date))
      const docs = await getDocs(q);
      docs.forEach((doc: any) => {
        console.log(doc.data())
      })
      console.log(docs.docs.length)
      if (docs.docs.length === 0) {
        try{
          await addDoc(collection(db, "appointments"), {
            email: auth.currentUser?.email,
            date,
            speciality
          });}
          catch (err) {
            console.error(err);
          }
        return false
      }
        return true
    };

Wenn ich bei der Seitenaktualisierung versuche, einen Termin zu buchen, der bereits angefordert wurde, ist die Dokumentlänge 0 und ich kann denselben Termin vereinbaren. Wenn ich es jedoch erneut versuche (ohne Aktualisierung), beträgt die Dokumentlänge 1 und es wird nicht in die Datenbank übertragen.

P粉463291248
P粉463291248

Antworte allen(1)
P粉237029457

我现在将日期字段解析为字符串,实际上是在比较字符串而不是日期。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage