Как разделить задачи уровня SERVICE в бэкэнде микросервиса / Cloud Functions - PullRequest
0 голосов
/ 19 января 2020

Я изо всех сил пытаюсь выяснить, как лучше всего наложить модели / услуги моего проекта. Поскольку бэкэнд является 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 в другой файл, без какой-либо развязки или реальной выгоды. так что я могу также просто написать его в триггере функции, чтобы вернуться к исходной точке.

ВОПРОС: Как мне структурировать мой код на служебном уровне моего бэкэнда приложения?

...