У меня есть скрипт, который очищает веб-сайт и должен отправлять данные обратно клиенту... ПРОСТО ЧТОБЫ ВЫ ЗНАЛИ, ЧТО ЭТО ВСЕ ВНУТРИ 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});
})
не отправляет данные клиенту, говорит, что произошла ошибка (необработанный отказ)
типо? res
не определено, но response
есть
Да, добавьте .catch(e => console.error(e))
, чтобы получить реальную ошибку.
В предоставленном фрагменте кода ни один из массивов не объявлен, и нет объекта res для вызова «отправить», поскольку ни один из них не передается в функцию.
Как только массивы объявлены, а res временно заменен на console.info, похоже, он работает с моей стороны.
Я предполагаю с вашей стороны, что эта функция вызывается внутри маршрута, поэтому в рамках этой функции должен быть доступен объект 'res'. Если это так, похоже, что это был просто вопрос объявления ваших массивов перед отправкой в них данных.
"не работает" что именно?