Прослушивание изменений в таблице mysql через nodejs
Появилась потребность написать бота, который отслеживает изменения в таблице mysql и выполняет какое-то действие. Как лучше всего это написать? Знаю про mysql-events, но хотелось бы каких-то понятных примеров.
Ответы (1 шт):
Автор решения: Serg3Mironov
→ Ссылка
Вариант решения задачи
Краткая схема такая:
- Подключаемся к базе
- Получаем контрольную сумму таблицы с помощью SQL запроса
CHECKSUM TABLE 'имя_таблицы'; - Бесконечно повторяем запрос с необходимым интервалом и сравниваем новую контрольную сумму с предыдущей
Если контрольная сумма отличается, значит данные таблицы изменились.
const mysql = require('mysql2')
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'mydatabase'
})
var lastCheckSum = null
setInterval(() => {
connection.query('CHECKSUM TABLE users', function (e, r) {
if (r[0]['Checksum'] == lastCheckSum || !lastCheckSum) {
console.log('Table not changed!')
} else {
console.log('Table changed!')
}
lastCheckSum = r[0]['Checksum']
})
}, 1000)