React控制台中未定义来自Express路由的JSON数组



我目前正在开发一个web应用程序来管理外部数据库。在这一点上,我对express或NodeJS不是很熟悉,所以我想问如何在不定义的情况下将JSON对象发送到客户端控制台?我有这个函数来连接,然后选择我需要的,然后我将JSON对象转换为JSON对象数组。它也在控制台中显示数据。

async function connect() {
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
} catch (err) {
console.error('Unable to connect to the database:', error);
}
info = await sequelize.query('select * from LeadsInformation', { type: QueryTypes.SELECT });
const details = JSON.stringify(info);
console.log(details);
detailsArray = JSON.parse(details);
console.log(detailsArray);
}

这里一切都很好,我可以获取数据并在终端中显示。这是我的GET路线:

app.get("/list", (req, res) => {
connect();
res.json(detailsArray)
});

基于其他解释和代码片段,我尝试了几种建议的方法,但到目前为止都不起作用,所以我就这样算了。我认为预先处理请求中的数据本身是一个解决方案,但它不起作用。我还尝试使用JSON本身并尝试显示它,还尝试使用主体解析器库。尽管图书馆已经两年没有更新了。此外,我正在使用axios来获取数据。当我尝试发送一个简单的字符串,如";你好世界";例如

我遗漏了什么吗?或者你有其他解决方案吗?如果可能的话,我也希望你能解释一下。

编辑:这可能也与我在前端获得响应的方式有关。我也会研究一下,如果我解决了这个问题,我会更新这个线程!

这就是我得到回应的方式。我目前正试图在控制台中显示。我正在使用axios API。

Axios({
method: "GET",
url: "http://localhost:5000/list",
headers: {
"Content-Type": "application/json"
}
}).then(res => {
console.log(res.data.json);
});

可能您的路由中有undefined,因为connect函数不返回任何内容。另外,connect是一个异步函数,这意味着它返回Promise,您必须调用.then方法或使用await从中获取值

以下是我上面描述的带有修复程序的代码片段。

async function connect() {
try {
await sequelize.authenticate();
console.log('Connection has been established successfully.');
} catch (err) {
console.error('Unable to connect to the database:', error);
}
info = await sequelize.query('select * from LeadsInformation', { type: QueryTypes.SELECT });
const details = JSON.stringify(info);
detailsArray = JSON.parse(details);
return detailsArray;
}
app.get("/list", async (req, res) => {
const result = await connect();
res.json(result)
});

注意,在路由器处理程序函数中,我也使用asyncawait,因为我调用connect,这是一个异步函数

上面的解决方案确实有效,我遇到的另一个问题是没有正确得到响应。在将我的代码从更改为以下代码后,我最终得到了前端的响应

console.log(res.data.json);

收件人:

console.log(res.data[1]);

最新更新