Saya baru mengenali React dan js dan saya menghadapi sedikit masalah untuk memahami cara Janji dan penyelesaian berfungsi.
Saya cuba menggunakan API untuk log masuk ke aplikasi yang mempunyai pangkalan data dalaman SQL. Pertanyaan adalah baik dan mengembalikan apa yang mereka perlukan untuk kembali, tetapi anehnya penghuraian data json akhirnya tidak berfungsi dan mengembalikannya sebagai tidak ditentukan.
Berikut ialah kod semasa yang berkaitan dalam 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"); }); });
Ini ialah kod yang berkaitan daripada apl saya:
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:'' }) };
Saya menjumpai satu lagi soalan serupa di tapak (Mengapa penghala tidak ditentukan dalam React js?), tetapi saya tidak nampak apa-apa perbezaan bermakna sebenar antara perkara yang saya lakukan dan jawapan yang diserahkan, jadi saya berasa sangat kehilangan. p>
Saya cuba menghuraikan respons api dalam json dan walaupun ia sudah menjadi ralat jenis, saya cuba merawat respons daripada aplikasi sebagai tatasusunan, saya cuba merawatnya sebagai boolean berdasarkan sama ada ia kosong atau tidak kosong dan lihat sama ada Saya boleh Tidak kira apa yang ada di dalamnya, kerana ia hanya akan diisi jika pengesahan itu sah. Saya tidak benar-benar melihat masalah itu, tetapi saya tahu ia adalah khusus pada Janji userAuth kerana ia nampaknya satu-satunya perkara yang mencipta atau menyusun semula ralat apabila saya menyentuhnya.
Saya terlupa untuk mengembalikannya selepas postAuth.