SQL может отправить событие на узел приложения? - PullRequest
0 голосов
/ 19 октября 2018

Некоторым ресурсом является создание новой строки в некоторой таблице в моей базе данных.

Можно ли уведомить мое приложение узла (например, событие), когда это происходит?для связи с базой данных я использую sequelize.js.не уверен, что это имеет значение.

любые идеи будут приветствоваться.

1 Ответ

0 голосов
/ 19 октября 2018

Чтобы понять ваш вопрос, я предполагаю, что вы ищете, когда строка вставлена ​​в таблицу.

Краткий и, вероятно, самый "правильный" ответ: нет, вы не можете.

Более длинный ответ: вы можете ... но это, вероятно, не будет красиво или эффективно .



Проверка количества строк в SQL

Все, что вам просто нужно сделать, - это отслеживать текущие строки, которые существуют в вашей таблице, создать интервалЦикл, который запрашивает вашу таблицу SQL, чтобы увидеть, сколько строк в ней.Оттуда вы узнаете, изменилось ли оно.SELECT COUNT(*) FROM mytable - это оператор SQL, который вы хотите использовать.

Учитывая, что ваш первичный ключ также автоматически увеличивается, вам не нужно будет делать MUCH, чтобы найти то, что было добавлено в таблицу.Если нет, вам нужно будет кэшировать свою таблицу в приложении, пройтись по ней и найти нечетную запись.Неэффективно, но все кончено.

Более интуитивный подход к этому, который не требует кэширования, приведен ниже.

Триггеры SQL и таблицы проверки

Триггеры SQL, вероятно, вашилучшая ставкаЕсли таблица, которую вы хотите прослушать, является, например, таблицей «пользователи», вы определите триггер для «пользователей», когда вставляется запись, для добавления в отдельную таблицу с именем «users_update», где она добавляет строку с информацией, котораяссылки на таблицу «users».

В вашем приложении Node вам нужно написать некоторый код, который проверяет таблицу «users_update», чтобы узнать, было ли что-либо добавлено в таблицу через определенные промежутки времени.Оттуда обработайте его и удалите из таблицы, чтобы не обрабатывать его снова, и тогда вы будете знать, когда материал был добавлен в вашу таблицу пользователей.

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

Я рекомендую это, если вы хотите простоту установки и несколько более эффективное использование SQLбаза данных и приложение Node.

Триггеры SQL и запуск внешнего приложения и использование сокетов

Еще одним менее ресурсоемким является запуск внешнего приложения NodeJS из командной строки с использованием триггеров SQL.Если вы посмотрите на принятый ответ здесь , вы увидите, что вы можете вызвать из него внешний EXE-файл.Вам нужно будет вызвать исполняемый файл NodeJS и затем передать путь к вторичному приложению NodeJS, которое подключается к вашему приложению NodeJS через сокет ( пример включен ).Затем вы будете использовать SQL для передачи аргументов вашему вторичному приложению NodeJS с данными, которые вы хотите отправить в основное приложение.Ваше основное приложение NodeJS будет просто ждать сообщения сокета, чтобы вы могли обрабатывать данные так, как вам хочется. Это, вероятно, намного больше работы, чем стоит, если только вам не требуется достаточно эффективная передача обновлений SQL


Я не совсем уверен, существует ли там какой-либо модульчто вы можете использовать со своим приложением NodeJS для добавления триггеров, но я уверен, что если вы откопали достаточно глубоко, кто-нибудь где-нибудь найдет модуль, который будет делать то, что вам нужно.

Извините, если я не сделалЯ не могу предоставить вам реальных примеров.Ваш вопрос немного сложен, чтобы дать прямое решение.

...