Wyzwalacze
Usługa Azure Cosmos DB to globalnie rozproszona wielomodelowa baza danych, która obsługuje modele danych dokumentów, grafów i klucz-wartość. Zawartość w tej sekcji służy do zarządzania zasobami wyzwalaczy przy użyciu interfejsu API SQL za pośrednictwem interfejsu REST.
Wyzwalacze to elementy logiki aplikacji, które można wykonać przed (wyzwalacze wstępne) i po (wyzwalaczach po wyzwoleniu) tworzenia, usuwania i zastępowania dokumentu. Wyzwalacze są zapisywane w języku JavaScript. Wyzwalacze wstępne i post nie przyjmują parametrów. Podobnie jak procedury składowane, wyzwalacze działają w granicach kolekcji, co ogranicza logikę aplikacji do kolekcji.
Podobnie jak procedury składowane, zasób wyzwalaczy ma stały schemat. Właściwość body zawiera logikę aplikacji. Poniższy przykład ilustruje konstrukcję JSON wyzwalacza.
{
"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"
}
Właściwość | Opis |
---|---|
id | Wymagane. Jest to właściwość ustawiana przez użytkownika. Jest to unikatowa nazwa używana do identyfikowania wyzwalacza. Identyfikator nie może przekraczać 255 znaków. |
Ciała | Wymagane. Jest to właściwość ustawiana przez użytkownika. Jest to treść wyzwalacza. |
triggerOperation | Wymagane. Jest to typ operacji, która wywołuje wyzwalacz. Dopuszczalne wartości to: Wszystkie, Wstaw, Zastąp i Usuń. |
triggerType | Wymagane. Określa to, kiedy wyzwalacz zostanie wyzwolony. Dopuszczalne wartości to: Pre i Post. Wyzwalacze wstępne są wyzwalane przed operacją, gdy wyzwalacz Post po operacji. |
_Rid | Jest to właściwość wygenerowana przez system. Identyfikator zasobu (_rid) to unikatowy identyfikator, który jest również hierarchiczny dla stosu zasobów w modelu zasobów. Jest on używany wewnętrznie do umieszczania i nawigacji zasobu wyzwalacza. |
_Ts | Jest to właściwość wygenerowana przez system. Określa ostatni zaktualizowany znacznik czasu zasobu. Wartość jest znacznikiem czasu. |
_Własny | Jest to właściwość wygenerowana przez system. Jest to unikatowy adresowy identyfikator URI zasobu. |
_Etag | Jest to właściwość wygenerowana przez system, która określa tag zasobu wymagany do optymistycznej kontrolki współbieżności. |
Zadania
Możesz wykonać następujące czynności za pomocą wyzwalaczy:
Aby uzyskać informacje na temat sposobu działania funkcji zdefiniowanych przez użytkownika, w tym wywoływania wyzwalacza, zobacz Programowanie w usłudze Azure Cosmos DB: procedury składowane, wyzwalacze i funkcje zdefiniowane przez użytkownika.