Почему цепочка обещаний не работает здесь, в Node.js? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть скрипт, который очищает веб-сайт и должен отсылать данные обратно клиенту ... ПРОСТО, ЧТО ВЫ ЗНАЕТЕ, ЧТО ЭТО ВСЕ ВНУТРИ app.get

Вот код ... Второй .thenне работает.Он должен отправлять массивы клиенту после того, как они были заполнены после того, как cheerio прошел через них.И все же это не работает ... Может, что-то не так с тем, как я настроил второе обещание?Пожалуйста, помогите.

  axios.get("https://www.sciencenews.org/").then(function(response){
     var $ = cheerio.load(response.data);
     $("div.field-item-node-ref").each(function(i,element){
       if($(element).children('.ad').length == 0 && $(element).children('article').length > 0) {
                    array1.push($(element).find('h2.node-title').text());
                    array2.push($(element).find('div.content').text());
 array3.push(`https://www.sciencenews.org${$(element).find('a').attr('href')}`);
                    array4.push(`${$(element).find('img').attr('src')}`);
                 }
            })
        }).then(()=>{
            res.send({titles:array1,summaries:array2,links:array3,base64img:array4});
         })

1 Ответ

1 голос
/ 27 мая 2019

В предоставленном фрагменте кода ни один из массивов не объявлен, и нет объекта res для вызова 'send', поскольку в функцию не передается ни один.

После того, как массивы объявлены и res временнозаменен на console.log, он, похоже, работает на моем конце.

Working Repl.it

С вашей стороны я предполагаю, что эта функция вызывается измаршрут, поэтому в области действия этой функции должен быть доступен объект res.Если это так, то похоже, что нужно было просто объявить ваши массивы, прежде чем отправлять на них данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...