当我进入localhost:3000 / api / categories时,我得到一个空数组,但是当我记录我的产品时,对象内部有很多数据。有人知道我在做什么错吗?谢谢!
let products = getData()
function getData() {
return fetch('some url',
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
}
).then(res => res.json())
};
app.get(('/api/categories'), (req, res) => {
products.then(console.log);
res.send(products);
products.then(console.log);
});
最佳答案
products
是一个承诺。您无法通过res.send
将其发送给客户端。
相反,请执行记录时的操作:使用then
:
app.get(('/api/categories'), (req, res) => {
products
.then(data => res.send(data))
.catch(error => {
// Send an error
});
});
请注意,您的代码在启动时会获取一次产品,然后使用该静态产品集响应请求。
如果要根据客户的要求获得产品,请删除
let products = getData();
并将其放在
get
处理程序中:app.get(('/api/categories'), (req, res) => {
this.getData()
.then(data => res.send(data))
.catch(error => {
// Send an error
});
});
每次客户端调用您的服务器时,都会重复该请求。
当然,您可能会考虑中间立场,将数据保留并重用X秒...
关于javascript - 从get获取空数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60371277/