Прослушивание изменений в таблице 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)
→ Ссылка