2016-03-13 57 views
0

我需要創建一個條件,當插入到DocumentDB表。 我正在使用.NET SDK。如何使用DocumentDB的預觸發插入操作審批/否決插入

當我使用的插入操作,我想該文件比較文件的休息和批准插入只有在有包含特定字段的值相同任何其他文件。

另一種選擇是將列定義爲獨特的,唯一的,在我的情況下,它是兩列應該是唯一的。

在這裏,我提出,由於某種原因,它沒有阻止INSERT操作觸發。

比較字段是「ApplicationSession」和「OperationCounter」

function UniqueAppSessionAndCounter() { 
var collection = getContext().getCollection(); 
var request = getContext().getRequest(); 
var docToCreate = request.getBody(); 


if (!docToCreate.ApplicationSession || docToCreate.ApplicationSession == "" 
    || !docToCreate.OperationCounter || docToCreate.OperationCounter == 0) { 
    throw new Error('Application session and Counter is a must'); 
} 


var filterQuery = 'SELECT * FROM r WHERE r.ApplicationSession = "' 
         + docToCreate.ApplicationSession + '" AND r.OperationCounter = ' 
         + docToCreate.OperationCounter; 
collection.queryDocuments(collection.getSelfLink(), filterQuery 
    , function (err, docs, options) { 
     if (docs.length > 0) { 
      throw new Error('Application session and Counter must be unique'); 
     } 
    });} 
+0

你能告訴我們你有什麼至今:

要在創建文檔時請確保您指定要包括觸發如下執行文件? –

回答

2

你確定你正在執行的觸發器,當你調用CreateDocumentAsync?

在DocumentDB,觸發器執行不自動像你所期望的。 這是因爲你往往有不同的文件,要在一個單一的集合,你可能需要對不同類型的文件不同的觸發器。

CreateDocumentAsync(coll_link, 
    new {foo: "bar"}, 
    new RequestOptions {IncludePreTrigger = "TriggerName"});