如何在 graphql 过滤器上传递变量?

How do I pass a variable on the graphql filter?

在下面的部分中,refqueryName 工作正常(只要您传递完整的 graphql 查询,而不仅仅是它的名称。无论如何,columnName 似乎不接受变量作为输入。检查 post 请求时,它只是说“columnName”而不是 id 或我在函数上指定 columnName 时碰巧用作搜索条件的任何内容打电话。

export async function fetchItems(ref, queryName, columnName) {
     const queryNameData = await API.graphql(graphqlOperation(queryName, {
          filter: {
               columnName: {
                    contains: ref,
               },
          }
     }))

     const { items } = queryNameData.data
     return (items)
}

这是 graphql post 到 dynamodb 的变量部分的示例:

{
    variables: {
        filter: {
            columnName: {
                contains: "062"
            }
        }
    }
}

queryName 和 ref 没问题,但在本例中“columnName”应该是“id”,因为这是我为函数调用设置的 columName 等于。

使用传递的参数准备 filter 对象,例如:

export async function fetchItems(ref, queryName, columnName) {
     let filter = {};
     filter[columnName] = { contains: ref };
     const queryNameData = await API.graphql(graphqlOperation(queryName, { filter }))