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

求AWS AppSync中JavaScript QUERY_ITEMS函数的实现示例

AWS AppSync 可复用查询函数实现指南

这份公开文档指南提到了一段简洁可复用代码的实现思路:

AWS AppSync函数允许您编写可在架构中多个解析器间复用的通用逻辑。例如,您可以创建一个名为QUERY_ITEMS的AWS AppSync函数,负责从Amazon DynamoDB数据源中查询数据项。对于需要查询数据项的解析器,只需将该函数添加到解析器的流水线中,并指定要使用的查询索引即可,无需重复实现逻辑。

我希望能看到该函数的具体实现,目前我对此并不清楚,这将帮助我更深入理解AppSync的使用方式。


我已实现了一个针对特定PK的查询。是不是只需要通过某种步骤来“硬编码”PK即可?

export const request = (ctx) => ({
  operation: "Query",
  query: {
    expression: "pk = :pk and (begins_with(sk, :sk))",
    expressionValues: util.dynamodb.toMapValues({
      ":pk": "DataType",
      ":sk": ctx.arguments.sort_path,
    }),
  },
});

通用QUERY_ITEMS函数实现

要实现可复用的查询函数,核心是把硬编码参数改成从上下文(ctx)动态获取,让不同解析器调用时能传入自定义参数:

export const request = (ctx) => ({
  operation: "Query",
  // 可选:支持传入全局二级索引名称
  index: ctx.arguments.indexName || null,
  query: {
    expression: "pk = :pk and begins_with(sk, :sk)",
    expressionValues: util.dynamodb.toMapValues({
      ":pk": ctx.arguments.pk,
      ":sk": ctx.arguments.sort_path
    })
  }
});

export const response = (ctx) => {
  return ctx.result.items;
};

使用方式

  1. 在AppSync控制台创建该函数,关联到你的DynamoDB数据源
  2. 给需要查询能力的解析器添加这个函数到流水线
  3. 调用时传入对应参数:
    • pk:目标分区键值
    • sort_path:排序键前缀
    • indexName(可选):全局二级索引名称

对你现有代码的优化

你当前代码把pk硬编码为"DataType",要改成通用型,只需要将:pk的值替换为ctx.arguments.pk即可。这样同一个函数就能支持不同PK的查询场景,不用重复编写解析器逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:52:06