gpt4 book ai didi

javascript - 使用 React 和 Express.js 获取 API 响应不会通过 console.log 显示任何结果

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:19 25 4
gpt4 key购买 nike

我有一个登录表单,它使用 fetch 将数据发送到 Express.js 后端。在客户端,当我想在 fetch 调用完成时显示结果时,不会显示任何内容(并且它永远不会到达数据回调)。我似乎没有收到任何错误,但我知道数据已成功发送到后端。

这是 Express.js 服务器代码:

const express = require('express');

const User = express.Router();

const bcrypt = require('bcrypt');

const user = require('../Models/user');

this is edited

 function loginRouteHandler(req, res) {
user.findOne(
{
where: {
userName: req.body.userName,
},
},
)
.then((data) => {
if (bcrypt.compareSync(req.body.password, data.password)) {
req.session.userName = req.body.userName;
req.session.password = req.body.password;
console.log(req.session);
res.status(200).send('Success!');
} else {
res.status(400).send('some text');
}
});
}

User.route('/').get(getRouteHandler);

User.route('/register').post(postRouteHandler);

User.route('/login').post(loginRouteHandler);

module.exports = User;

这是获取调用:

fetch('http://localhost:4000/login',{
method: 'POST',
headers: {
'Accept': 'application/json,text/plain, */*',
'Content-Type': 'application/json'
},
body: JSON.stringify({
userName: this.state.userName,
password: this.state.password,

}),

}).then((response)=>{
if(response.ok){
console.log(response)
}
else {
console.log("a problem")
}
}).then((data)=>{
console.log(data)
});

最佳答案

在您的 loginRouteHandler 中,如果 bcrypt 比较成功,则响应中不会返回任何内容。因此,在 if 语句的第一个分支中,放置 res.send('Success!') 或类似的内容。

这是一个例子:

function loginRouteHandler(req, res) {
user.findOne(
{
where: {
userName: req.body.userName,
},
},
)
.then((data) => {
if (bcrypt.compareSync(req.body.password, data.password)) {
req.session.userName = req.body.userName;
req.session.password = req.body.password;
console.log(req.session);
res.status(200).send('Success!');
} else {
res.status(400).send('some text');
}
});
}

更新:您也没有通过 .text().json() 获取获取响应的输出。您必须将 fetch 调用更新为以下内容:

fetch(/* stuff */).then((response)=>{
if(response.ok){
console.log(response)
}
else {
console.log("a problem")
}
return response.text()
}).then((data)=>{
console.log(data)
});

关于javascript - 使用 React 和 Express.js 获取 API 响应不会通过 console.log 显示任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com