【问题标题】:Nested graphql query嵌套的graphql查询
【发布时间】:2022-02-16 00:15:22
【问题描述】:

我对 graphql 很陌生,我不知道如何应用这个过滤器。

下面是架构

const GET_TICKETS = gql`
  query Ticket($filter: String) {
    tickets(filter: $filter) {
      id
      title
      firstname
      lastname
      gender
      contactnumber
      email
      address
      pincode
      location
      emergency_type
      priority
      descriptionof_assistance
      date_created
      status
      work_items {
          id
          status
          service
          volunteers {
              volunteer_id
              volunteer_name
              status_of_acceptance
          }
      }
    }
  }
  `;

我想获取工作项包含给定志愿者的所有票

在 workitems.volunteers 中获取志愿者的票 ....类似这样的东西

【问题讨论】:

    标签: reactjs graphql apollo-client


    【解决方案1】:

    当你使用useQuery时,函数触发器上有一个可选的第二个参数或useLazyQuery

    来自官方文档的示例。

    useQuery

      const { loading, error, data } = useQuery(GET_DOG_PHOTO, {
        variables: { breed },
      });
    

    所以在你的情况下应该是

      const { loading, error, data } = useQuery(GET_TICKETS, {
        variables: { filter: "the filter value" },
      });
    

    useLazyQuery 将如下所示:

      const [getTickets, { loading, error, data }] = useLazyQuery(GET_TICKETS);
    
      //..... somewhere else
      getTickets({variables: {filter: "filter value"}})
    

    参考:https://www.apollographql.com/docs/react/data/queries/

    【讨论】:

    • 过滤器值是什么,这就是我苦苦挣扎的地方。我的意思是,如何编写过滤器
    • fetch tickets where volunteer in workitems.volunteers.. 您可以将filter 更改为您想要过滤的其他内容,例如,您想获得通过志愿者id 过滤的票证,query Ticket($volunteer_id: String) { tickets(volunteer_id: $volunteer_id) { ... 当然您必须提供参数 on您的后端架构,并处理它。目前尚不清楚您想要的精确过滤器是什么,由您的解释决定
    猜你喜欢
    • 2021-01-29
    • 2020-12-02
    • 2018-06-13
    • 1970-01-01
    • 2019-05-30
    • 2021-01-14
    • 2017-06-16
    • 2017-07-17
    • 2017-01-30
    相关资源
    最近更新 更多