Heim  >  Fragen und Antworten  >  Hauptteil

React – JS Api: Undefinierte Rückgaben auflösen

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粉253800312P粉253800312170 Tage vor277

Antworte allen(1)Ich werde antworten

  • P粉777458787

    P粉7774587872024-04-04 13:44:35

    我忘记在 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;
      };

    Antwort
    0
  • StornierenAntwort