Использует интерфейс / пользовательский интерфейс для выполнения мутаций GraphQL… анти-шаблон?

#vue.js #design-patterns #graphql #apollo

#vue.js #шаблоны проектирования #graphql #apollo

Вопрос:

Итак, в настоящее время у меня просто есть проект, который использует Vue.js для моего интерфейса. Существует GraphQL, поддерживаемый базой данных sqlite. Vue.js с помощью Apollo клиент считывает входящие сообщения с сервера websocket и на основе этого сообщения выполняет либо создание, либо обновление мутации GraphQL. В основном он просматривает ключ сообщения и выполняет запрос graphql по этому ключу. Если этот ключ существует, обновите мутацию, в противном случае выполните мутацию create (вставьте в таблицу).

Этот проект был просто любимым проектом для изучения GraphQL. Итак, я только что сказал кому-то, кого я знаю об этом, и сказал, что разрешение пользовательскому интерфейсу обрабатывать записи в БД является анти-шаблоном. Я не уверен, что это значит, но какие мысли? Клиент Apollo / Vue на самом деле просто отправляет запросы gql, а фактическая запись обрабатывается базовым сервером GraphQL Apollo.

Технически, я думаю, я мог бы использовать отдельный микросервис, который записывает данные в БД напрямую, и не нужно выполнять какие-либо мутации GraphQL?

Комментарии:

1. Я был бы обеспокоен тем, что для каждого сообщения websocket требуется два вызова gql, поиск ключа, за которым следует мутация. Звучит неэффективно.

2. @jaco0646 да, это определенно очень плохая реализация, но на самом деле это было просто поиграть с разными технологиями. В основном это было сделано для того, чтобы попытаться интегрировать Kafka с GraphQL и потоковыми событиями и как заставить их взаимодействовать друг с другом в основном.

3. ‘upsert’ (обновление или установка) — мутация обновления может проверить, существует ли ключ, и обработать его по-другому… анти-шаблон? это зависит … работает только тогда, когда активен интерфейс / страница… человеческий фактор / фильтр (оператор одобряет сохранение только некоторых сообщений)… сервер может сделать то же самое, может иметь некоторую службу прослушивания потоков / сокетов и обновления с помощью graphql (если не нашей DB / service)