当我进入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/

10-13 00:44