我正在从Stripe API收集数据,并且我的产品列表中有很多产品(10,000多种产品)
我正在尝试进行一些简单的数据收集,并且仅在所有ID都已收集并存储在数组中之后,才使用玉模板显示我的产品ID。
这里是我的服务器端代码:
router.get('/getall', asyncHandler(async(req,res,next) => {
var allIds = [];
var id = ''
var count = 0;
for await (const product of stripe.products.list( {type: 'service'} )) {
count++;
id = product.id
allIds.push(quotedText);
console.log(id);
console.log(count);
}
res.render('list.jade', { title: 'Express', data: allIds });
}));
list.jade
block content
h1= title
p Welcome to #{title}
ul
each id in data
li= id
一旦检索到所有ID,就不会发送翡翠模板。我在浏览器中看到的是“此页面不起作用,本地主机未发送任何数据。”
我想知道这是否是该过程花费了太长时间的结果?我该如何确保它等到完成ID收集并重新加载数据后才开始?
答案 0 :(得分:1)
检入开发工具(“网络”标签),看看请求是否超时?
您可以使用
更改节点http服务器的超时时间app.post('/getall', function (req, res) {
req.setTimeout(5*60*1000);
});
在这种情况下,我强烈建议渲染不包含数据的页面,然后在页面加载后使用AJAX(XMLHttpRequest)来获取数据。 (它也提供了更好的用户体验,因为如果您也使ui这样说的话,用户就知道它正在加载某些东西)