Визуализация нефритовой страницы после длинного процесса узла - PullRequest
0 голосов
/ 06 декабря 2018

Я собираю данные из Stripe API, и у меня в списке продуктов много продуктов (более 10 000+)

Я пытаюсь выполнить простой сбор данных и представить идентификаторы своего продукта с использованием нефритового шаблона.только один раз все идентификаторы были собраны и сохранены в массиве.

Вот мой код на стороне сервера:

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

Раз всеиз идентификаторов были получены, нефритовый шаблон не отправляется.Все, что я вижу в своем браузере: «Эта страница не работает, localhost не отправил никаких данных».

Мне было интересно, не было ли это результатом того, что процесс занял слишком много времени?Как мне убедиться, что он ждет, пока я закончу собирать идентификаторы и перезагрузить данные?

1 Ответ

0 голосов
/ 06 декабря 2018

Проверить средства разработки (вкладка "Сеть") и посмотреть, истекает ли время ожидания запроса?

Вы можете изменить тайм-аут сервера http узла, используя

app.post('/getall', function (req, res) {
   req.setTimeout(5*60*1000); 
});

В этой ситуации яНастоятельно рекомендуем отрисовывать страницу без данных, а затем использовать AJAX (XMLHttpRequest) для извлечения данных после загрузки страницы.(он обеспечивает лучшее взаимодействие с пользователем, потому что пользователь знает, что он загружает что-то долгое, если вы заставите пользовательский интерфейс сказать тоже самое)

...