经过长节点处理后呈现玉页面

时间:2018-12-06 13:09:08

标签: node.js express pug stripe-payments

我正在从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收集并重新加载数据后才开始?

1 个答案:

答案 0 :(得分:1)

检入开发工具(“网络”标签),看看请求是否超时?

您可以使用

更改节点http服务器的超时时间
app.post('/getall', function (req, res) {
   req.setTimeout(5*60*1000); 
});

在这种情况下,我强烈建议渲染不包含数据的页面,然后在页面加载后使用AJAX(XMLHttpRequest)来获取数据。 (它也提供了更好的用户体验,因为如果您也使ui这样说的话,用户就知道它正在加载某些东西)