我是 React 和 js 的新手,我有點難以理解 Promise 和 resolve 的工作原理。
我正在嘗試使用 API 來登入具有 SQL 內部資料庫的應用程式。查詢很好並返回了它們需要返回的內容,但奇怪的是,json 數據的解析最終並沒有工作,而是以未定義的形式返回。
以下是 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"); }); });
這是我的應用程式中的相關程式碼:
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:'' }) };
我在網站上發現了另一個類似的問題(為什麼router 在React js 中未定義?),但我沒有看到我正在做的事情和提交的答案之間有任何實際有意義的差異,所以我感到非常迷失。 p>
我嘗試解析json 中的api 回應,即使它已經是一個類型錯誤,我嘗試將應用程式的回應視為數組,我嘗試將它視為基於是否為布林值空或不空,看看我是否可以不關心裡面具體是什麼,因為只有在驗證有效的情況下它才會被填滿。 我並沒有真正看到問題,但我知道它專門位於 userAuth 的 Promise 上,因為當我觸摸它時,它似乎是唯一會創建或重新表述錯誤的東西。
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; };