React – JS Api: Undefinierte Rückgaben auflösen
P粉253800312
P粉253800312 2024-04-03 17:51:57
0
1
286

Ich bin neu bei React und js und habe ein paar Probleme zu verstehen, wie Promise und Resolution funktionieren.

Ich versuche, mich über die API bei einer Anwendung anzumelden, die über eine interne SQL-Datenbank verfügt. Die Abfragen sind in Ordnung und geben das zurück, was sie zurückgeben müssen, aber seltsamerweise funktioniert das Parsen der JSON-Daten am Ende nicht und gibt sie als undefiniert zurück.

Hier ist der aktuell relevante Code in der API:

userAuth = (identifiant, mdp) => {
    return new Promise((resolve, reject) => {
      config.query(
        "SELECT identifiant, mdp FROM utilisateur WHERE identifiant = '"+identifiant+"' and mdp = '"+mdp+"'",
        (error, utilisateur) => {
          if (error) {
            return reject(error);
          }
          //une petite manipulation de donnée pour éviter des soucis de format par la suite.
          return resolve(utilisateur);
        }
      );
    });
  };
  
   
  
  app.post("/auth", (req, res) => {
    console.log("connection");
    const data = {
      identifiant: req.body.Identifiant,
      mdp: req.body.Password,
    };
    console.log(data);

    userAuth(data.identifiant, data.mdp)
      .then((response) => {
        console.log(response);
        res.send(response);
      })

      .catch((error) => {
        console.log(error);
        res.status(500).send("Erreur serveur");
      });
  });

Dies ist der relevante Code aus meiner App:

const handleSubmit = async (event) => {
        event.preventDefault();
        const id = formAuth.Identifiant;
        const password = formAuth.Password;
        if(!password.match(re)){alert("Format de mot de passe incorrect")}
        else {
            const response = await postAuth();
            console.log(response);
            if (response.lenght != 0){
                navigAcc('/Accueil');
            }
            else{
                alert("Identifiant ou mot de passe incorrect")
            }
        }
    }

const postAuth = async () => {
        const body = {
          Identifiant: formAuth.Identifiant,
          Password: formAuth.Password
        };      
        const config = {
          headers: {
            'Content-Type': 'application/json'
          }
        };
        const response = (await axios.post(api+"auth", body, config));
        setFormAuth({
            Identifiant:'',
            Password:''
        })
      };

Ich habe auf der Website eine weitere ähnliche Frage gefunden (Warum ist der Router in React js nicht definiert?), aber ich habe keinen wirklich bedeutsamen Unterschied zwischen dem, was ich tue, und der eingereichten Antwort gesehen, sodass ich mich sehr verloren fühle.

Ich habe versucht, die API-Antwort in JSON zu analysieren, und obwohl es bereits ein Typfehler war, habe ich versucht, die Antwort von der Anwendung als Array zu behandeln, ich habe versucht, sie als booleschen Wert zu behandeln, basierend darauf, ob sie leer war oder nicht, und zu sehen, ob Es spielt keine Rolle, was drin ist, da es nur gefüllt wird, wenn die Validierung gültig ist. Ich sehe das Problem nicht wirklich, aber ich weiß, dass es speziell am Promise von userAuth liegt, weil es das Einzige zu sein scheint, was den Fehler erzeugt oder umformuliert, wenn ich es berühre.

P粉253800312
P粉253800312

Antworte allen(1)
P粉777458787

我忘记在 postAuth 后返回它。

const postAuth = async () => {
    const body = {
      Identifiant: formAuth.Identifiant,
      Password: formAuth.Password
    };      
    const config = {
      headers: {
        'Content-Type': 'application/json'
      }
    };
    const response = (await axios.post(api+"auth", body, config));
    setFormAuth({
        Identifiant:'',
        Password:''
    })
    return response;
  };
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!