В GraphQL, как выбрать поле с условием, что одна и та же функция появляется более одного раза

#graphql

#graphql

Вопрос:

У меня есть набор данных с такой схемой:

 {
orders{
    consumer{
        _id,
        name
            }
    }
}
  

Мой запрос :

  query{
      orders{
            customer{
          _id
        }
      }
    }
  

И мне дано:

 {
  "data": {
    "orders": [
      { 
        "amount" : 12345,
        "customer": {
          "_id": "aaaaaaaaa"
        }
      },
      {
        "amount" : 12324,
        "customer": {
          "_id": "aaaaaaaaaa"
        }
      },
      {
        "amount" : 12385,
        "customer": {
          "_id": "bbbbbbbbbb"
        }
      },
      { 
        "amount" : 12245,
        "customer": {
          "_id": "cccccccccc"
        }
      }
      {
        "amount" : 12349,
        "customer": {
          "_id": "cccccccccc"
        }
      }, ... ]
    }
 }
  

Я хотел бы вернуть все заказы с тем же идентификатором customer_id, которые отображаются более одного. Таким образом, желаемый возврат будет :

 {
  "data": {
    "orders": [
      { 
        "amount" : 12345,
        "customer": {
          "_id": "aaaaaaaaa"
        }
      },
      {
        "amount" : 12324,
        "customer": {
          "_id": "aaaaaaaaaa"
        }
      },
      { 
        "amount" : 12245,
        "customer": {
          "_id": "cccccccccc"
        }
      }
      {
        "amount" : 12349,
        "customer": {
          "_id": "cccccccccc"
        }
      }, ... ]
    }
 }
  

Таким образом, порядок для custmer_id = «bbbbbbbbb» должен быть устранен, поскольку этот customer_id появляется только один раз.

Как написать запрос GraphQL?

Ответ №1:

Я хотел бы вернуть все заказы с тем же идентификатором customer_id, которые отображаются более одного. …

Таким образом, порядок для custmer_id = «bbbbbbbbb» должен быть устранен, поскольку этот customer_id появляется только один раз.

Как написать запрос GraphQL?

graphql не для этого

Фильтрация, поиск, подсчет … отсутствует в спецификациях graphql. Для этих требований нет стандартизированных параметров или синтаксиса.

Роль решателя заключается в выполнении действий / бизнес-логики [в ответ на некоторые параметры / переменные — действия, управляемые данными].

В этом случае вы можете использовать некоторый «флаг фильтра», например, «recurringOnly» (не требуется, по умолчанию false), для распознавателя «заказов». Когда запрос будет содержать true значение для этого флага:

 query{
  orders(recurringOnly: true) {
  

… распознаватель должен отфильтровывать неповторяющиеся записи… как? зависит от деталей реализации сервера / службы / DB / ORM / libs / всего, что используется для разрешения данных / результатов.