В настоящее время я разрабатываю API-интерфейс GraphQL с NodeJS и ищу умный способ обмена кодом между функциями создания и обновления сущностей.
Context
В моем приложении пользователи могут создавать и обновлять свои собственные рейсы (в качестве пилота), поэтому у меня есть два поля ввода GraphQL (CreateFlightInput
и UpdateFlightInput
), которые вызываются из двух разных мутаций.
Задача
Когда пользователь создает рейс, он должен предоставить самолет, на котором он летел. Поскольку плоскость представлена идентификатором Mongo, API должен проверить, существует ли плоскость и может ли ее видеть пользователь. Но когда пользователь обновляет рейс, такая же проверка требуется (потому что пользователь может изменить самолет, который он использовал). Поскольку я использую два резольвера (мутации), я не хочу писать один и тот же код дважды, тем более что у меня одна и та же проблема для поля пассажиров. Вы спросите меня, что если все проверки одинаковы, почему я использую два разных распознавателя? Проблема в том, что сервер должен выполнять определенные действия во время create
, но не во время update
. Подводя итог, у нас есть два резольвера, разделяющие некоторый похожий код, но не только.
У вас есть идея, где я мог бы написать этот код, который я могу использовать для обоих? Я думал о функции с логическим значением, которая указывает, редактируем ли мы или нет, но я бы знал, есть ли лучший метод (ы).
Спасибо за вашу помощь.