Как вы фильтруете ответ списка, используя запрос graphql в Сангрии - PullRequest
0 голосов
/ 31 августа 2018

Я использую сервер GraphQL в Sangria (scala). Вот пример запроса:

query {
  missions { 
    missionId { id } ,
    name
  }
}

и пример ответа:

{
  "data": {
    "missions": [
      {
        "missionId": {
          "id": "mission1"
        },
        "name": "foo"
      },
      {
        "missionId": {
          "id": "mission2"
        },
        "name": "bar"
      }
    ]
  }
}

Я ищу запрос, который фильтрует список и возвращает только элемент, имеющий mission1 в качестве идентификатора?

1 Ответ

0 голосов
/ 31 августа 2018

Вам нужно реализовать нумерацию страниц. Передайте limit (pageSize) аргумент graphql серверу resolver. обработать данные на стороне сервера.

query {
  missions(limit: 1) { 
    missionId { id } ,
    name
  }
}

на стороне сервера:

const resolvers = {
  Query: {
    missions: (_, {limit}, ctx) => {
      const missions = [];

      for(let i = 0; i < limit; i++) {
        missions.push(db.missions[i])
      }
      return missions;
    }
  }
}

Это идеология graphql, разработчик внешнего интерфейса определяет структуру данных и какие данные они хотят получить.

Запрашивать данные list через http-запрос - плохая идея. И filter данные во внешнем интерфейсе, используя directive или другой способ graphql. Отработанная пропускная способность.

...