Какая архитектура и структура должна быть у такого приложения?
Доброго времени суток!
Будет много текста и идей.. Было бы здорово, если бы подсказали, как лучше всего сделать.
1. Модуль, который получает значения из внешнего АПИ. На основание этих значений будут приниматься дальнейшие действия.
2. Модуль, который отвечает за оповещение. Для примера возьмем бота телеграмма. Он будет ближе всего для понимания.
Как я себе это представляю:
0.1 авторизация клиента(модуль 2)
0.2 авторизация апи(модуль 1 изи описанного выше)
1.0 приходит инфа через 1 модуль
1.1 запись в базу
1.2 определяем подходят данные под условие или нет
2. Если данные из 1.2 подходят под какие-то определенные условия вызываем нужный скрипт(myscript1, для примера)
3.1. Внутри скрипта myscript1 описаны некоторые взаимодействия с данными
3.2. Вызов методов из 0.2 для оповещения
Проблема заключается в том, как разделить функционал по файлам и чтобы все работало.
Были идеи:
а) То что описал выше, но столкнулся с проблемами, которые опишу ниже.
б) Все в одном файле сделать с дальнейшей переработкой. Сразу же отверг
в) Сделать независимые скрипты. Грубо говоря, один слушает апи и пишет в базу. Второй скрипт читает базу на предмет новых записей и обрабатывает данные с последующей записью в базу для скрипта три. Третий скрипт читает базу и занимается оповещением.
В пункте "а" возникли проблемы с тем, что на конечном этапе не всегда удавалось пробросить авторизованный клиент телеграмма для оповещения.
Допустим в main.js происходит авторизация всего через промисы все это происходит последовательно. Но тогда приходится передавать клиент из 0.1(telAPI.js) в 0.2(devAPI), а затем и в 3.2. До этого была попытка экспорта отправки сообщений из 0.1 в 3.2 напрямую, но не всегда 0.1 успевал до 1.2 клиент подключиться подключиться до экспорта в 3.2 и событий в 0.2..
Получалось так, что внутри 3.1(myscript1) скрипт пытается вызвать метод из 0.1, но он еще undefinded
Выложи структуру проекта. А то ничего не понятно.
Проектная документация - самый хороший вариант, который помогает "разложить всё по полочкам".
Т.е. в ней отображается ход мыслей, а в схемах она визуализируется.
Попробуй на бумаге "раскидать" связь модулей, затем раздели функциональность по сущностям (или по другим критериям).
Понятно лишь одно, проект пока в теории, я так тоже делал когда слабо понимал в реализации, правильно сделали что обратились сюда. Для начала вам нужно познакомиться с module.exports = {} чтобы реализовать это: Проблема заключается в том, как разделить функционал по файлам и чтобы все работало. Вам не нужно разделять на файлы каждую операцию, у вас есть модуль - например авторизация, один файл. В котором будет запись и выемка из бд. Можете разбить на 2 файла reg/auth и засунуть в папку. Настоятельно рекомендую делать так, как вам удобно, а уже потом искать устоявшиеся пути решений.
Ну прототип есть, в котором пробрасывается через все до последнего скрипта клиент для оповещений. Но чувствуется, что это явный костыль.
Итого получается.
main.js:
1)создаем клиент 0.1 (telAPI.js) и экспортируем его
2)пробрасываем клиент 0.1 в АПИ 0.2(devAPI.js)
3) В 0.2(devAPI.js) по событию вызываем скрипт 3.1(myscript1) передаем необходимые полученные данные+клиент 0.1
4)и вот только тогда я могу пользоваться клиентом 0.1 в полной мере
итого получается 4 файла. ведь это как-то так должно работать?
raxid43695, к сожалению слишком запутанно всё у вас на словах, отталкивайтесь от моего ответа и придёте к решению. Попробуйте так, как в текущем комментарии - если ВАС устроит это, тогда всё ок на текущем этапе.