本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Sync
請求物件可讓您從 DynamoDB 資料表擷取所有結果,然後只接收自上次查詢 (差異更新) 後變更的資料。 Sync
請求只能對版本控制的 DynamoDB 資料來源提出。您可以指定下列選項:
-
排除結果的篩選結果
-
要傳回多少項目
-
分頁字符
-
上次起始
Sync
操作時
Sync
請求物件具有下列結構:
type DynamoDBSyncRequest = {
operation: 'Sync';
basePartitionKey?: string;
deltaIndexName?: string;
limit?: number;
nextToken?: string;
lastSync?: number;
filter?: {
expression: string;
expressionNames?: { [key: string]: string };
expressionValues?: { [key: string]: any };
};
};
欄位定義如下:
同步欄位
-
operation
-
要執行的 DynamoDB 操作。若要執行
Sync
操作,這必須設定為Sync
。此值為必填。 -
filter
-
篩選條件,可用於在傳回 DynamoDB 之前篩選結果。如需篩選條件的詳細資訊,請參閱篩選條件。此欄位為選用欄位。
-
limit
-
單次可評估的項目數量上限。此欄位為選用欄位。如果省略此值,預設限制將設為
100
個項目。此欄位的最大值為1000
個項目。 -
nextToken
-
分頁字符將繼續先前的查詢。這會是從先前查詢所取得的。此欄位為選用欄位。
-
lastSync
-
上次成功啟動
Sync
操作的時間 (以毫秒為單位)。如果指定此值,只會傳回lastSync
之後變更的項目。這個欄位是選用的,而且只有在初始Sync
操作擷取所有頁面之後才能填入。如果省略此值,將傳回 Base 資料表的結果,否則會傳回 Delta 資料表的結果。 basePartitionKey
-
執行
Sync
操作時使用的基礎資料表的分割區索引鍵。此欄位允許在資料表使用自訂分割區金鑰時執行Sync
操作。此為選用欄位。 deltaIndexName
-
用於
Sync
操作的索引。當資料表使用自訂分割區索引鍵時,需要此索引才能在整個差異存放區資料表上啟用Sync
操作。Sync
操作將在 GSI 上執行 (在gsi_ds_pk
和 上建立gsi_ds_sk
)。此欄位為選用欄位。
DynamoDB 同步傳回的結果會自動轉換為 GraphQL 和 JSON 基本類型,並可在內容結果 () 中使用context.result
。
如需 DynamoDB 類型轉換的詳細資訊,請參閱類型系統 (回應映射)。
如需 JavaScript 解析程式的詳細資訊,請參閱 JavaScript 解析程式概觀。
結果的結構如下:
{
items = [ ... ],
nextToken = "a pagination token",
scannedCount = 10,
startedAt = 1550000000000
}
欄位定義如下:
-
items
-
包含同步傳回項目的清單。
-
nextToken
-
如果結果可能更多, 會
nextToken
包含分頁字符,您可以在另一個請求中使用。 AWS AppSync 會加密和混淆從 DynamoDB 傳回的分頁字符。這樣可確保資料表的資料不會不慎洩漏給發起人。此外,這些分頁字符不能用於不同的函數或解析程式。 -
scannedCount
-
在套用篩選條件表達式 (如果有) 之前,DynamoDB 擷取的項目數量。
-
startedAt
-
開始同步操作時,可以在本機存放並在另一個請求中做為
lastSync
引數的時間 (以 epoch 毫秒為單位)。如果請求中包含分頁字符,則該值將與請求針對第一頁結果傳回的值相同。
範例
下列範例是 GraphQL 查詢的函數請求處理常式:syncPosts(nextToken: String, lastSync: AWSTimestamp)
。
在此範例中,如果省略 lastSync
,則會傳回 Base 資料表中的所有項目。如果提供 lastSync
,只會傳回自 lastSync
變更之 Delta Sync 資料表中的項目。
export function request(ctx) {
const { nextToken, lastSync } = ctx.args;
return { operation: 'Sync', limit: 100, nextToken, lastSync };
}