本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
延伸模組
extensions
包含一組方法,可在解析程式中執行其他動作。
extensions.evictFromApiCache(typeName: string, fieldName: string, keyValuePair: Record<string, string>) : Object
-
從 AWS AppSync 伺服器端快取中移出項目。第一個引數是類型名稱。第二個引數是欄位名稱。第三個引數是包含金鑰值對項目的物件,可指定快取金鑰值。您必須以與快取解析程式 中的快取金鑰相同的順序,將項目放入物件中
cachingKey
。如需快取的詳細資訊,請參閱快取行為。範例 1:
此範例會移出針對已呼叫 快取金鑰的解析程式快取的項目
Query.allClasses
,該解析程式context.arguments.semester
使用呼叫 的快取金鑰。當呼叫變動且解析程式執行時,如果項目已成功清除,則回應會在延伸項目物件中包含一個apiCacheEntriesDeleted
值,顯示已刪除多少項目。import { util, extensions } from '@aws-appsync/utils'; export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.evictFromApiCache('Query', 'allClasses', { 'context.arguments.semester': ctx.args.semester, }); return null; }
注意
此函數僅適用於變動,不適用於查詢。
extensions.setSubscriptionFilter(filterJsonObject)
-
定義增強型訂閱篩選條件。每個訂閱通知事件會根據提供的訂閱篩選條件進行評估,並在所有篩選條件評估為 時傳送通知給用戶端
true
。引數為filterJsonObject
(如需此引數的詳細資訊,請參閱以下引數:filterJsonObject 區段)。請參閱增強型訂閱篩選。注意
您只能在訂閱解析程式的回應處理常式中使用此延伸函數。此外,我們建議您使用
util.transform.toSubscriptionFilter
來建立您的篩選條件。 extensions.setSubscriptionInvalidationFilter(filterJsonObject)
-
定義訂閱失效篩選條件。系統會針對失效承載評估訂閱篩選條件,如果篩選條件評估為 ,則會使指定的訂閱失效
true
。引數為filterJsonObject
(如需此引數的詳細資訊,請參閱以下引數:filterJsonObject 區段)。請參閱增強型訂閱篩選。注意
您只能在訂閱解析程式的回應處理常式中使用此延伸函數。此外,我們建議您使用
util.transform.toSubscriptionFilter
來建立您的篩選條件。 extensions.invalidateSubscriptions(invalidationJsonObject)
-
用來從變動啟動訂閱失效。引數為
invalidationJsonObject
(如需此引數的詳細資訊,請參閱以下引數: invalidationJsonObject 區段)。注意
此延伸模組只能用於變動解析程式的回應映射範本。
在任何單一請求中,您最多只能使用五個唯一的
extensions.invalidateSubscriptions()
方法呼叫。如果您超過此限制,您將會收到 GraphQL 錯誤。
引數:filterJsonObject
JSON 物件會定義訂閱或失效篩選條件。這是 中的一系列篩選條件filterGroup
。每個篩選條件都是個別篩選條件的集合。
{ "filterGroup": [ { "filters" : [ { "fieldName" : "userId", "operator" : "eq", "value" : 1 } ] }, { "filters" : [ { "fieldName" : "group", "operator" : "in", "value" : ["Admin", "Developer"] } ] } ] }
每個篩選條件都有三個屬性:
-
fieldName
– GraphQL 結構描述欄位。 -
operator
– 運算子類型。 -
value
– 要與訂閱通知值比較fieldName
的值。
以下是這些屬性的範例指派:
{ "fieldName" : "severity", "operator" : "le", "value" : context.result.severity }
引數: invalidationJsonObject
invalidationJsonObject
定義下列項目:
-
subscriptionField
– 要失效的 GraphQL 結構描述訂閱。定義為 中字串的單一訂閱subscriptionField
會被視為失效。 -
payload
– 金鑰值對清單,當失效篩選條件true
針對其值評估為 時,此清單會做為使訂閱失效的輸入。當訂閱解析程式中定義的失效篩選條件
true
針對payload
值評估為 時,下列範例會使用onUserDelete
訂閱使已訂閱和已連線的用戶端失效。export const request = (ctx) => ({ payload: null }); export function response(ctx) { extensions.invalidateSubscriptions({ subscriptionField: 'onUserDelete', payload: { group: 'Developer', type: 'Full-Time' }, }); return ctx.result; }