本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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-28
和2018-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
-
僅傳回 中列出的屬性
projection
expression
。此傳回值等同於指定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 文件 。