suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die React Firestore-Abfrage findet das Dokument beim ersten Durchlauf nicht

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粉463291248P粉463291248468 Tage vor703

Antworte allen(1)Ich werde antworten

  • P粉237029457

    P粉2370294572023-09-13 09:18:09

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

    Antwort
    0
  • StornierenAntwort