【发布时间】:2020-08-31 10:39:06
【问题描述】:
我无法从我的 api 获得好的答案,例如我尝试从 api 读取“true”或“false”以授予 user 的授权,但我得到的只是未定义的数据。 从发送数据到验证用户,这两种方法都可以完美运行。
我在服务器中有这个 api 方法:
router.get("/sickers/user/login/:mail/:pass", (req, res) => {
//var values = JSON.parse(req.body);
var pass = req.params.pass;
var email = req.params.mail;
//console.log(values);
if (pass !== null || pass !== "") {
try {
con.connect();
con.query("SELECT Password FROM `sickers` WHERE Email='" + email + "'", function(err, rows, field) {
if (err) {
console.log(err);
res.send("an error detected try later");
} else {
try {
if (pass == rows[0].Password) {
res.json({ "result": "true" })
} else {
res.json({ "result": "false" })
}
} catch {
res.json({ "result": "false" })
}
}
});
} catch (e) {
res.send("no data found");
console.log("obj not found");
}
}
con.end();
});
这个调用 api 在我的反应应用程序中:
submithandler(e) {
e.preventDefault();
const url = 'http://localhost:8000/api/sickers/user/login/'+this.state.email+'/'+this.state.password+'';
const res = fetch(url);
const data = res;
this.setState({result:data});
alert(this.state.result);
}
谢谢。
【问题讨论】:
-
fetch和setState都是异步的。您需要等待fetch调用,或将其余代码添加到.then回调中,并从setState回调中发出警报,以便事情按照您期望的顺序执行。
标签: node.js reactjs api express