Я изо всех сил пытаюсь выяснить, как лучше всего наложить модели / услуги моего проекта. Поскольку бэкэнд является Firebase, это не типичный node.js серверный бэкэнд. Верхний слой, «маршрутизация / триггеры» уже позаботился
Я не хочу писать все бизнес-логи c в файлах триггеров функций (ie, в каталоге api). Я создал еще две директории под sr c: models
и services
. Итак, у нас есть api
, models
, services
.
Например, у меня есть модуль нового пользователя. Он связан с триггером Firebase Auth onCreate (). Вот конкретные c цели этого конкретного маршрута:
- отправка подтверждающего электронного письма
- запись документа для пользователей / коллекции
- запись первоначальных пользовательских требований для пользователя auth
Моей первоначальной мыслью было написать что-то вроде этого:
import userService from '../services/user'
onCreate((user, context) => {
const newUserService = userService().newUserService();
// The above is a function which instantiates the class, ie new NewUserService()
newUserService.verifyInput(user, context);
newUserService.verifyEmail(user, context);
newUserService.writeDocument(user, context);
newUserService.writeClaims(user, context);
});
Почему я записываю шаги для триггера в функции? Я мог бы так же легко написать:
import newUserService from 'blah';
//...
newUserService.createNewUser(user, context); // put all the steps in this method
Но это, похоже, опять побеждает всю цель, поскольку я просто перемещаю все бизнес-логи c в другой файл, без какой-либо развязки или реальной выгоды. так что я могу также просто написать его в триггере функции, чтобы вернуться к исходной точке.
ВОПРОС: Как мне структурировать мой код на служебном уровне моего бэкэнда приложения?