Я указал функцию, которая выполняется после вставки строки в таблицу. Эта функция использует функцию pg_notify
для уведомления канала jobqueue
с помощью JSON полезной нагрузки новой строки.
job_notifier
Функция:
CREATE FUNCTION job_notifier() RETURNS TRIGGER AS $$
BEGIN
PERFORM pg_notify('jobqueue', row_to_json(NEW)::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Это триггер: CREATE TRIGGER job_created AFTER INSERT ON jobs EXECUTE FUNCTION job_notifier();
Таблица jobs
состоит из нескольких столбцов.
Я использую библиотеку node- postgres для доступа к базе данных. Один из моих JS клиентов, созданных с помощью этой библиотеки, получает сообщение, поэтому я знаю, что функция запускается в нужный момент.
Однако полезная нагрузка - пустая строка. Когда я заменяю row_to_json(NEW)::text
простой строкой, такой как 'abcd'
, я получаю эту полезную нагрузку, поэтому по какой-то причине преобразование в JSON объект не выполняется.
Я не уверен, что это проблема с моей функцией базы данных но я подозреваю, что это может быть проблема с библиотекой Javascript.
Кто-нибудь использовал node-postgres
для такого рода установки? База данных работает внутри контейнера docker (официальное postgres
изображение из Dockerhub), может быть, я мог бы включить какую-то регистрацию, чтобы увидеть, генерируется ли полезная нагрузка в базе данных?