Scan - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Scan

Scan 請求映射文件可讓您告訴 AWS AppSync DynamoDB 解析程式向 DynamoDB 提出Scan請求,並可讓您指定下列項目:

  • 排除結果的篩選結果

  • 要使用哪些索引

  • 要傳回多少項目

  • 是否使用一致性讀取

  • 分頁字符

  • 平行掃描

Scan 映射文件結構如下:

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

欄位定義如下:

掃描欄位

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。此傳回值等同於指定 projection的 ,expression而不指定 的任何值Select

totalSegments

執行平行掃描時分割資料表的區段數。此欄位為選用的,但若指定 segment,則此欄位必須指定。

segment

此操作中執行平行掃描時的資料表區段。此欄位為選用的,但若指定 totalSegments,則此欄位必須指定。

projection

用於指定要從 DynamoDB 操作傳回之屬性的投影。如需投影的詳細資訊,請參閱投影 。此欄位為選用欄位。

DynamoDB 掃描傳回的結果會自動轉換為 GraphQL JSON 和原始類型,並可在映射內容中使用 ($context.result)。

如需 DynamoDB 類型轉換的詳細資訊,請參閱類型系統 (回應映射)

如需回應映射範本的詳細資訊,請參閱解析程式映射範本概觀。

結果的結構如下:

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

欄位定義如下:

items

包含 DynamoDB 掃描傳回項目的清單。

nextToken

如果可能有更多結果, 會nextToken包含分頁權杖,您可以在另一個 request. AWS AppSync encrypts 中使用,並混淆從 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 文件