La requête React Firestore ne trouve pas le document lors de la première exécution
P粉463291248
P粉463291248 2023-09-12 10:49:36
0
1
705

Je crée une application Web où les utilisateurs peuvent prendre rendez-vous avec des médecins et je souhaite empêcher les utilisateurs de prendre rendez-vous avec le même médecin à la même heure et à la même date que d'autres utilisateurs ont déjà demandées. J'utilise une base de données Firestore pour stocker les informations de rendez-vous sous forme de document. Voici ma fonction qui gère la vérification et la transmet à ma base de données Firebase :

    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
    };

Lors de l'actualisation de la page, si j'essaie de prendre un rendez-vous déjà demandé, la longueur des documents est de 0 et je peux prendre le même rendez-vous. Cependant, si j'essaye à nouveau (sans actualiser), la longueur du document est de 1 et il n'est pas transmis à la base de données.

P粉463291248
P粉463291248

répondre à tous(1)
P粉237029457

J'analyse maintenant le champ de date comme une chaîne et je compare les chaînes au lieu des dates.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal