觸發程序

Azure Cosmos DB 是一個全域散發的多模型資料庫,可支援檔、圖形和索引鍵值資料模型。 本節中的內容是透過 REST 管理觸發程式資源

觸發程式是應用程式邏輯片段,可在 (預先觸發程式) 之前,以及在 (觸發程式後) 建立、刪除和取代檔之後執行。 觸發程序是以 JavaScript 撰寫的。 前置和後置觸發程序都不會使用參數。 如同預存程序、觸發程序的存在於集合的範圍內,因此將應用程式邏輯限定於集合中。

類似於預存程序,觸發程序資源也有固定的結構描述。 主體屬性包含應用程式邏輯。 下列範例說明觸發程序的 JSON 結構。

{  
"id":"PostTrigger-UpdateMetaAll",  
"body": "  
function updateMetadata() {  
        var context = getContext();  
        var collection = context.getCollection();  
        var response = context.getResponse();  
        var createdDocument = response.getBody();  
  
        // query for metadata document  
        var filterQuery = 'SELECT * FROM root r WHERE r.id = "_metadata"';  
        var accept = collection.queryDocuments(collection.getSelfLink(), filterQuery,  
            updateMetadataCallback);  
        if(!accept) throw "Unable to update metadata, abort";  
  
        function updateMetadataCallback(err, documents, responseOptions) {  
            if(err) throw new Error("Error" + err.message);  
                     if(documents.length != 1) throw 'Unable to find metadata document';  
                     var metadataDocument = documents[0];  
  
                     // update metadata  
                     metadataDocument.createdDocuments += 1;  
                     metadataDocument.createdNames += " " + createdDocument.id;  
                     var accept = collection.replaceDocument(metadataDocument._self,  
                           metadataDocument, function(err, docReplaced) {  
                                  if(err) throw "Unable to update metadata, abort";  
                           });  
                     if(!accept) throw "Unable to update metadata, abort";  
                     return;                      
        }  
}  
",  
"_rid":"hLEEAI1YjgcBAAAAAAAAgA==",  
"_ts":1408058682,  
"_self":"dbs\/hLEEAA==\/colls\/hLEEAI1Yjgc=\/udfs\/hLEEAI1YjgcBAAAAAAAAgA==\/",  
"_etag":"00004100-0000-0000-0000-53ed453a0000"  
}  
  
屬性 描述
id 必要。 它是使用者可設定的屬性。 它用來識別觸發程序的唯一名稱。 識別碼不能超過 255 個字元。
body 必要。 它是使用者可設定的屬性。 這是觸發程式的主體。
triggerOperation 必要。 這是叫用觸發程式的作業類型。 可接受的值為: AllInsertReplaceDelete。
triggerType 必要。 這會指定觸發程式何時引發。 可接受的值為: PrePost 作業後 張貼 觸發程式時,會在作業之前引發預先觸發程式。
_擺脫 它是系統產生的屬性。 資源識別碼 (_rid) 是資源模型上每個資源堆疊的階層式唯一識別碼。 在內部用來放置和導覽觸發程序資源。
_Ts 它是系統產生的屬性。 代表資源的上次更新時間戳記。 值為時間戳記。
_自我 它是系統產生的屬性。 代表資源的唯一可定址 URI。
_Etag 它是系統產生的屬性,指定開放式並行控制所需的資源 etag。

工作

您可以使用觸發程式執行下列動作:

如需 UDF 如何運作的詳細資訊,包括叫用觸發程式,請參閱 Azure Cosmos DB 程式設計:預存程式、觸發程式和 UDF

另請參閱