本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Scan
Scan
請求可讓您告訴 AWS AppSync DynamoDB 函數向 DynamoDB 提出Scan
請求,並可讓您指定下列項目:
-
排除結果的篩選結果
-
要使用哪些索引
-
要傳回多少項目
-
是否使用一致性讀取
-
分頁字符
-
平行掃描
Scan
請求物件具有下列結構:
type DynamoDBScanRequest = { operation: 'Scan'; index?: string; limit?: number; consistentRead?: boolean; nextToken?: string; totalSegments?: number; segment?: number; filter?: { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: any }; }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; };
欄位定義如下:
掃描欄位
-
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 類型轉換的詳細資訊,請參閱類型系統 (回應映射)。
如需 JavaScript 解析器的詳細資訊,請參閱JavaScript 解析器概觀 。
結果的結構如下:
{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10 }
欄位定義如下:
-
items
-
包含 DynamoDB 掃描傳回項目的清單。
-
nextToken
-
如果可能有更多結果, 會
nextToken
包含分頁權杖,您可以在另一個 request. AWS AppSync encrypts 中使用,並混淆從 DynamoDB 傳回的分頁權杖。這樣可確保資料表的資料不會不慎洩漏給發起人。此外,這些分頁權杖無法用於不同的函數或解析器。 -
scannedCount
-
在套用篩選條件表達式 (如果有) 之前DynamoDB 擷取的項目數量。
範例 1
下列範例是 GraphQL 查詢的函數請求處理常式:allPosts
。
在此範例中,資料表中的所有項目都會傳回。
export function request(ctx) { return { operation: 'Scan' }; }
範例 2
下列範例是 GraphQL 查詢的函數請求處理常式:postsMatching(title: String!)
。
在此範例中,資料表中開頭為 title
引數的所有項目都會傳回。
export function request(ctx) { const { title } = ctx.args; const filter = { filter: { beginsWith: title } }; return { operation: 'Scan', filter: JSON.parse(util.transform.toDynamoDBFilterExpression(filter)), }; }
如需 DynamoDB Scan
的詳細資訊API,請參閱 DynamoDB API 文件 。