如何在桑格利亚汽酒中使用graphql查询过滤列表响应

时间:2018-08-31 09:24:55

标签: graphql sangria

我正在桑格利亚汽酒(scala)上运行graphQL服务器。这是查询示例:

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

和示例响应:

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

我正在寻找一个过滤列表的查询,只返回ID为mission1的元素?

1 个答案:

答案 0 :(得分:0)

您需要工具分页。将limitpageSize)参数传递到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的意识形态,前端开发人员定义了数据结构以及他们想要获取的数据。

通过http请求查询list数据是个坏主意。然后使用filterdirective的其他方式graphql前端数据。浪费带宽。