You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppSync GraphQL查询在JavaScript中过滤失效问题求助

解决AWS AppSync GraphQL查询filter参数失效问题

问题根源

你的filter和limit参数传递方式错误——它们需要被包裹在variables对象中,而非直接与query字段平级。这种写法导致AppSync服务器未接收到过滤条件,因此返回了所有用户数据。

修正后的代码

async function findUser(login_email) {
    console.log("login email: " + login_email)
    const user = await client.graphql({
      query: listUsers,
      // 所有查询变量必须放在variables字段内
      variables: {
        filter: {email: {eq: login_email}},
        limit: 1,
      },
    });
    console.log("all users: " + JSON.stringify(user));
}

关键说明

从你提供的Codegen生成的listUsers查询定义可以看到,该查询明确接受$filter、$limit这类命名变量:

export const listUsers = /* GraphQL */ `
  query ListUsers(
    $filter: ModelUserFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        email
        username
        gender
        password
        profile
        createdAt
        updatedAt
        __typename
      }
      nextToken
      __typename
    }
  }
`;

AWS AppSync客户端的graphql方法要求,所有需要传递给服务器的查询变量必须放在variables对象中,否则服务器无法识别这些参数,自然会忽略过滤逻辑。

验证方式

可以通过浏览器开发者工具的Network面板,查看发送给AppSync的请求体,确认variables字段是否包含了正确的filter和limit值,以此验证参数是否正确传递。

内容的提问来源于stack exchange,提问作者david backx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:04:58