2017-06-20 3 views
0

Ich versuche, einen Trigger auf eine Sammlung zu setzen, und es scheint nicht zu stolpern. Der Trigger ist mit dem Azure-Portal vorbereitet. Ich habe versucht, spezifische Logik - aber am Ende nur ein Beispiel auf der Azure Site platziert. Die Triggerlogik ist die folgende:Azure Cosmos/Document DB Trigger

var context = getContext(); 
var request = context.getRequest(); 

// document to be created in the current operation 
var documentToCreate = request.getBody(); 

// validate properties 
if (!("timestamp" in documentToCreate)) 
{ 
    var ts = new Date(); 
    documentToCreate["my timestamp"] = ts.getTime(); 
} 

// update the document that will be created 
request.setBody(documentToCreate); 

Der Trigger funktioniert nicht. Es scheinen keine Fehler zu entstehen und ich bin mir nicht sicher, was passiert.

Hinweis: Der Trigger ist ein Pre-Crate-Trigger. Und für die Trigger-Logik, die ich aufgelistet habe, erstelle ich kein Dokument mit einer "my timestamp" -Eigenschaft. Ich habe auch andere Szenarien entlang des gleichen Konzepts getestet, wo ich dem erstellten Dokument ein Attribut hinzufügen möchte.

Antwort

4

Trigger werden nicht automatisch ausgelöst. Stattdessen müssen Sie den Trigger explizit in der Operation angeben, für die Sie den Trigger aktivieren möchten. Dies geschieht aus Performance-Gründen, macht Trigger aber weniger nützlich.

+0

Wie genau werden von einer Operation ausgelöst? Und können sie nur aus Code ausgelöst werden? Können sie vom Azure-Portal gestolpert werden? – Peter

+0

Für das node.js-SDK geben Sie es in den Anforderungsoptionen einer beliebigen Operation an (z. B. "upsertDocument()"): http://azure.github.io/azure-documentdb-node/global.html#RequestOptions . Ich vermute etwas ähnliches für die anderen SDKs. –

+0

Soweit ich weiß, wie Larry Maccherone erwähnt, müssen wir explizit den Trigger in der Operation angeben, um den Trigger zu aktivieren. Momentan scheint es, dass es vom Azure-Portal nicht unterstützt wird. Ich finde auch einen anderen smilar [SO-Thread] (https://stackoverflow.com/questions/32647843/trigger-in-documentdb-not-fired). –