首页 > 解决方案 > 如何将过滤器插入到 graphql 查询字符串中?

问题描述

不幸的是,据我所知,文档中没有任何关于如何将变量传递给过滤器的好例子。以下是在 App Sync 中工作的查询示例:

 query listPayments {
        listPayments(filter: {residentId: {contains: "some_random_id"}}) {
      items {
        timestamp
        totalAmount
        feeAmount
        transactionId
        paymentTraceId
        paymentReferenceId
        paymentMethodId
      }
    }
 }

但我不知道如何将它传递给我的函数,然后与模板字符串交互:

export const getResidentPayments = async (residentId) => {
  console.log('getting payments...')
  try {
    paymentHistoryResponse = (await API.graphql(
      graphqlOperation(listPayments, {
        input: {id: residentId}
      }),
    )).data
    console.log('payment history res', paymentHistoryResponse);
    paymentHistoryResponse = JSON.parse(paymentHistoryResponse);
    return paymentHistoryResponse
  } catch (error) {
    console.log('got payment history err', error);
    throw error;
  }
}

const listPayments = ` query listPayments ($residentId: id ) {
  listPayments(filter: {residentId: {contains: $residentId}}) {
    items {
      timestamp
      totalAmount
      feeAmount
      transactionId
      paymentTraceId
      paymentReferenceId
      paymentMethodId
    }
  }
}
`;

如果有人能告诉我我做错了什么,将不胜感激,因为这可能是一个相当明显的新手错误。我很震惊 graphql 没有这方面的文档示例,除非我也弄错了。

标签: javascriptgraphqlaws-appsync

解决方案


AppSync 为您构建了许多功能。类型 Def 有什么用listPayments

listPayments您是否为需要一个字段和一个字符串的过滤器输入?


推荐阅读