Как позвонить в мой веб-скрепер из экспресс-маршрута? - PullRequest
0 голосов
/ 22 октября 2019

У меня есть веб-скребок в корне моего сервера Nodejs, на котором работает экспресс. Это файл, который использует needle для выполнения запросов на получение html и возвращает массив данных. Затем у меня есть мой index.js с моими экспресс-маршрутами, такой как "/api/scrape".

Однако, когда я перехожу к этому URL-адресу, консоль сервера все равно распечатывает файл console.log в утилите, чтобы указать, что она заканчивается. Но экспресс хочет двигаться дальше, прежде чем дождаться окончания скребка.

Как мне дождаться окончания скребка, прежде чем отправить ответ обратно в React.

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете попробовать преобразовать вашу функцию, которая вызывает веб-скребок, в асинхронную функцию, и вызвать экспресс-вызов функции с помощью await. Таким образом, экспресс будет ждать возвращения обещания, а не двигаться вперед.

Я полагаю, что это также достижимо в экспрессе, поместив его в качестве промежуточного программного обеспечения:

const example_scrape = (req, res, next) => {
... do your scraping
next() //allows express to move onto the next route? not sure the terminology 
}


app.get('/api/scrape_my_site', example_scrape, (req,res) => {
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...