Фреймворк для управления документооборотом в NodeJS API? - PullRequest
0 голосов
/ 18 декабря 2018

Я делаю API в Node и MongoDB.В настоящее время я использую Express и Mongoose.

Для пояснения давайте предположим, что это просто (но это не так) и состоит только из одной коллекции, называемой событиями и четырьмя пользовательскими ролями.:

  1. events-manager - создает и редактирует событие
  2. venue-manager - утверждает события и размещает их в общедоступной части сайта
  3. guest - посещает сайт объекта и следит за событиями
  4. site-admin - выполняет все роли и решает все, что не так

Я хочу, чтобы каждое событие было в одном из трисостояния :

  1. draft (событие, которое готовится),
  2. public - активное событие, видимое посетителям места
  3. cancelled - событие, которое было отменено, но остается видимым для информирования общественности об отмене

Я ищу масштабируемый способ, структуру или дизайн API, чтобы решить эти проблемы:

1)Сообщите клиенту, какие переходы доступны, отфильтруйте документы в зависимости от наличияпереходы (например, показ событий для утверждения) и предотвращения недопустимых действий

Конечно, бизнес-логика никогда не бывает легкой, и вы не можете перейти из состояния draft в состояние cancelled из логики потока.Мне нужно сопровождать исходящие документы (в данном случае события) метаданными о возможных переходах.

Но это означало бы установить время логического дерева - для защиты маршрута для недопустимых переходов, для фильтрации документов с доступным переходом (например,события с доступным действием публикации должны иметь state:draft) и помещать возможные переходы в документы, перечисленные в другом запросе.

2) Сообщите клиенту, какие конечные точки CRUD (и переходы) доступны пользователю благодаряКонтроль доступа на основе ролей и предотвращение доступа к запрещенным.

Наш пользователь должен знать, доступен ли какой-либо переход, хотя он или она не одобрен для такого перехода.Проверка этого аналогична предыдущему пункту, мне нужно будет охранять маршрут и проверять исходящие документы.

3) Держать бизнес-логику отделенной от клиента

Записывая логику дважды, один раз дляпредставление потока документов и один раз для проверки, если желаемые действия доступны для пользователя, могут вызвать ошибки.Клиент должен получить информацию о возможных следующих шагах с сервера (или возможность обнаружения HATEOAS API)

4) Повторно использовать код, сохранять код обслуживаемым другими

Для решения проблем 1-3,Я искал в интернете (и особенно в StackOverflow) взад и вперед, во время своих попыток я в основном пошел наполовину, написав свою собственную платформу, но другие после меня не поддержали бы ее, если бы я не предоставил подробную документацию и многолетнюю поддержку.

Я до сих пор не верю, что это не проблема, с которой сталкиваются другие разработчики, и проблема, которая не имеет простого решения.Надеюсь, что кто-то здесь есть один:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...