This repository was archived by the owner on Mar 2, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
index.js
do- edited this page Dec 30, 2019
·
9 revisions
Пусть точкой входа для знакомства с кодом приложения будет тот файл, который непосредственно подаётся node на запуск. Называется он, как принято в node-приложениях, index.js.
Как нетрудно убедиться, его действие сводится к:
- чтению конфигурации;
- построению модели данных с автоматической миграцией предоставленной БД;
- запуску процесса прослушивания, где для каждого входящего HTTP-запроса:
- определяется подходящий класс обработчика:
- либо
WebUiBackend: обработчик динамических запросов (реализация бизнес-логики); - либо Web-сервер EluStatic для выдачи фиксированного набора HTML/js/css;
- ...здесь можно добавить какие-либо ещё классы обработчиков для HTTP: например, адаптеры для запросов SOAP- или каких-то ещё Web-сервисов;
- либо
- создаётся соответствующий объект и вызывается его метод
run;
- определяется подходящий класс обработчика:
LISTEN / NOTIFY PostgreSQL:
this.pools.db.listen ({
name : 'dia',
handler : Async,
params : {conf: this, pools: this.pools}
})
Это позволяет запускать в обработку на стороне node.js запросы, инициированные триггерными процедурами. Даже если изменения данных инициируются не Dia-приложением, а какими-либо сторонними процессами:
after_update: `
IF NEW.size = NEW.uploaded AND OLD.size <> OLD.uploaded THEN
PERFORM pg_notify (
'dia',
'{"type":"my_type","action":"process","id":"' || NEW.uuid || '"}'
);
END IF;
RETURN NEW;
`,