2016-08-05 65 views

Antwort

2

Ihr Verständnis ist richtig. Es gibt keinen technischen Blocker, um diese Funktion vom Portal aus zuzulassen, nur dass sie momentan fehlt.

Es ist sicherlich eine gültige Anfrage @https://feedback.azure.com/forums/263030-documentdb

+0

im bedeutete hilft ie, Sie können DocumentDBStudio (https://github.com/mingaliu/DocumentDBStudio/releases/tag/0.70) verwenden, um Trigger zu testen –

+0

Vielen Dank! Ich habe gerade eine Anfrage gestellt. Übrigens, eine Sache, die ich sicherstellen möchte, ist: alle Trigger, egal Pre-Trigger oder Post-Trigger, sie alle führen in der gleichen Transaktion mit Erstellen, Löschen oder Ersetzen Aktionen, richtig? Wenn bei Create, Delete oder Replace etwas fehlschlägt, werden Pre-Trigger oder Post-Trigger zurückgesetzt, oder? –

+0

Ja, jeder Fehler während der CRUD + Pre/Post-Trigger wird zurückgesetzt. –

0

DocumentDb Datenbank-Trigger gesetzt werden, werden nicht automatisch über DML angehoben, wie & Löschvorgänge erstellen, die in anderen Datenbanken üblich ist.

Das heißt, Trigger müssen für jede Datenbankoperation angegeben werden, die Sie im Anwendungscode vornehmen. Außerdem sollte der Trigger vom selben Typ sein, das heißt, eine Einfügeoperation kann nur einen Create-Trigger-Typ annehmen, keinen Type ersetzen.

Da habe ich azure Funktion documentdb Ausgabe Bindungen, und nicht die DML-Operationen selbst. Nachdem Sie viel Zeit mit der Fehlersuche verschwendet haben, wurde eine gespeicherte Prozedur unter der Datenbanksammlung erstellt und anschließend über den Azure-Funktionscode unter Verwendung der folgenden Art von Code aufgerufen.

Das funktioniert perfekt:

// call stored procedure, nodejs, azure 

'use strict'; 

var DocumentClient = require('documentdb').DocumentClient; 
var client = new DocumentClient(process.env.DB_HOST, {masterKey: process.env.DB_M_KEY}); 

var sprocLink = 
    'dbs/' + sprocDbName1 + 
    '/colls/' + sprocCollName1 + 
    '/sprocs/' + sprocName1; 

var sprocParams = { 
    key1: "val1", 
    key2: "val2" 
}; 

client 
     .executeStoredProcedure(
       sprocLink, 
       sprocParams1, 
       function (err, results) { 

        if (err) { 

         context.log.error('err'); 
         context.log.error(err); 

         return; 
        } 

        context.log.verbose('results'); 
        context.log.verbose(results); 

        return; 
       }); 

Hinweis: Geben Sie Werte für DB_HOST (url endend mit: 443 /), DB_M_KEY, sprocDbName1 (Ihr DB-Name), sprocCollName1 (Ihr Kollektionsnamen, sprocName1 (Ihre gespeicherten proc Name)

Vor über eine gespeicherte Prozedur (sproc) tun sollte innerhalb DocumentDb Datenbank Sammlung erstellt in werden.

Hoffnung, dass.