我是 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:''
})
};
我在网站上发现了另一个类似的问题(why router is undefined in react js?)但是我没有看到我正在做的和提交的答案之间有任何实际有意义的区别所以我真的很迷茫。
我尝试在 json 中解析 api 的响应,即使它已经是为了查看它是否是类型错误,我尝试将来自应用程序的响应视为数组,我尝试根据它是否为空或将其视为布尔值不要看我是否可以不关心里面具体是什么,因为只有在身份验证有效的情况下它才会被填充。 我没有真正看到问题,但我知道它专门位于 userAuth 的 Promise 上,因为它是唯一在我触摸它时似乎会产生或重新表述错误的东西。
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;
};