#mysql #node.js
#mysql #node.js
Вопрос:
Я пытаюсь написать приложение, которое будет проверять, изменилась ли веб-страница. Я использую NodeJS mysql, потому что я с ними знаком.
Итак, на данный момент у меня проблема в том, что мой запрос слишком «медленный», поэтому моя функция не вернет true, хотя должна. Могу ли я как-то заставить свое приложение ждать запроса?
Редактировать:
checkEntry(webpage, callback) {
var oldPage;
this.mysql.query('SELECT OldWebpagecol FROM Web_Scraping.OldWebpage WHERE idOldWebpage = 15', (err, rows) => {
if (err) console.log(err);
oldPage = rows[0].OldWebpagecol;
if (webpage === oldPage) {
return true;
}
return false;
})
}
Комментарии:
1. Совет: используйте Promises, если можете, через
async
иawait
даже лучше. Также рассмотрите возможность использования более абстрактного уровня, такого как Sequelize , по сравнению сmysql
драйвером.2. Примечание: функция
return
here в функции обратного вызова ничего не делает, она игнорируется. Вместо этого вам нужно сделатьcallback(null, webpage === oldPage)
.
Ответ №1:
Вы можете использовать async / await при выполнении запроса.
Например,
(async () => {
let response = await fetch(‘/api/users’);
})();
Комментарии:
1. Но я не извлекаю данные из API, я делаю запрос mysql? Итак, как это будет выглядеть?
2. Напишите свой запрос mysql вместо вызова api. Это не сложно, просто напишите async в начале функции и напишите await в начале выполнения запроса mysql.
3. Если вы добавите какой-нибудь код, я могу вам очень помочь.
4. Теперь я опубликовал свой запрос