проблема составления результата запроса в шлюзе graphQL

Итак, у нас микросервисная архитектура и возникла потребность в запросах разных типов из разных микросервисов. поэтому мы внедрили шлюз graphQL, и он работает, и это действительно хорошо. но была эта особая потребность, которая просто сводила меня с ума от того, как это сделать. мы используем nestjs и typeorm.

Проблема: проблема в том, что мы хотим выполнить поиск по объекту пользователя, который находится в личном сервисе, а также по объектам, связанным с пользователем в разных сервисах. например, скажем, я хочу, чтобы пользователи с таким именем, как «Джон», не вносили платеж (их идентификатор пользователя не существует в записях) на прошлой неделе и не покупали наш последний продукт (опять же, их идентификатор пользователя не существует на записей), но купили предыдущий (имеются их идентификатор пользователя и платежный идентификатор). как видите, они глубоко связаны. кроме того, мы хотим показать окончательный результат с разбиением на страницы и количество совпавших с ним результатов. как вы можете видеть, результат каждого фильтра тесно связан с другими.

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

поэтому вопрос в том, как вы можете сделать такой запрос? Я искал и слышал о CQRS, но нет ли другого подхода, кроме дублирования данных, одной базы данных и прочего? также, поскольку мы используем машинописный текст, я не могу запрашивать каждый и хранить все их данные в коде. если было найдено 10000 пользователей, javascript просто исчерпает память кучи.

Что ты предлагаешь?

0 ответов

Другие вопросы по тегам