扫描 - AWS AppSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

扫描

Scan请求映射文档允许您告诉 D AWS AppSync ynamoDB 解析器向 DynamoDB 发出Scan请求,并允许您指定以下内容:

  • 排除结果的筛选条件

  • 要使用的索引

  • 要返回多少个项目

  • 是否使用一致性读取

  • 分页标记

  • 并行扫描

Scan 映射文档具有以下结构:

{ "version" : "2017-02-28", "operation" : "Scan", "index" : "fooIndex", "limit" : 10, "consistentRead" : false, "nextToken" : "aPaginationToken", "totalSegments" : 10, "segment" : 1, "filter" : { ... }, "projection" : { ... } }

字段定义如下:

Scan 字段

version

模板定义版本。目前支持 2017-02-282018-05-29。该值为必填项。

operation

要执行的 DynamoDB 操作。要执行 Scan DynamoDB 操作,该字段必须设置为 Scan。该值为必填项。

filter

一个筛选条件,可用于在返回来自 DynamoDB 的结果之前对其进行筛选。有关筛选条件的更多信息,请参阅筛选条件。该字段是可选的。

index

要查询的索引的名称。除了哈希键的主键索引以外,您还可以通过 DynamoDB 查询操作扫描本地二级索引和全局二级索引。如果指定,这会指示 DynamoDB 查询指定的索引。如果省略,则将查询主键索引。

limit

单次评估的最大项目数。该字段是可选的。

consistentRead

一个布尔值,用于指示在查询 DynamoDB 时是否使用一致性读取。该字段是可选的,默认值为 false

nextToken

继续之前查询的分页标记。这应已从之前查询中获得。该字段是可选的。

select

默认情况下, AWS AppSync DynamoDB 解析器仅返回投影到索引中的任何属性。如果需要更多属性,则可以设置该字段。该字段是可选的。支持的值为:

ALL_ATTRIBUTES

返回指定的表或索引中的所有项目属性。如果您查询本地二级索引,则 DynamoDB 从父表中为索引中的每个匹配项目获取整个项目。如果索引配置为投影所有项目属性,则可以从本地二级索引中获得所有数据,而不要求提取。

ALL_PROJECTED_ATTRIBUTES

仅在查询索引时才允许。检索已投影到索引的所有属性。如果索引配置为投影所有属性,则此返回值等同于指定 ALL_ATTRIBUTES

SPECIFIC_ATTRIBUTES

仅返回 projectionexpression 中列出的属性。该返回值相当于指定 projectionSelect,而不指定 expression 的任何值。

totalSegments

执行并行扫描时对表进行分区的分段数。该字段是可选的,但如果指定 segment,则必须指定该字段。

segment

执行并行扫描时,此操作中的表分段。该字段是可选的,但如果指定 totalSegments,则必须指定该字段。

projection

用于指定从 DynamoDB 操作返回的属性的投影。有关投影的更多信息,请参阅投影。该字段是可选的。

DynamoDB 扫描返回的结果会自动转换为 GraphQL JSON 和原始类型,并且可在映射上下文中找到 ()。$context.result

有关 DynamoDB 类型转换的更多信息,请参阅类型系统(响应映射)

有关响应映射模板的更多信息,请参阅解析器映射模板概述

结果的结构如下所示:

{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10 }

字段定义如下:

items

包含 DynamoDB 扫描返回的项目的列表。

nextToken

如果可能有更多结果,则nextToken包含可在其他请求中使用的分页令牌。 AWS AppSync 加密并混淆从 DynamoDB 返回的分页令牌。这可防止您的表数据无意中泄露给调用方。另外,无法跨不同的解析器使用这些分页标记。

scannedCount

在应用筛选条件表达式(如果有)之前 DynamoDB 检索的项目数。

示例 1

以下示例是 GraphQL 查询 allPosts 的映射模板。

在本示例中,将返回表中的所有条目。

{ "version" : "2017-02-28", "operation" : "Scan" }

示例 2

以下示例是 GraphQL 查询 postsMatching(title: String!) 的映射模板。

在本示例中,将返回表中标题以 title 参数开头的所有条目。

{ "version" : "2017-02-28", "operation" : "Scan", "filter" : { "expression" : "begins_with(title, :title)", "expressionValues" : { ":title" : $util.dynamodb.toDynamoDBJson($context.arguments.title) }, } }

有关 DynamoDB 的更多信息,请参阅 Scan API DynamoDB 文档。API