2017-04-20 118 views
1

我正在嘗試編寫很少的預插入觸發器(爲集合中的每個文檔生成數字ID),註冊它並使用DocumentDB .NET SDK運行。我使用DocumentDB模擬器來測試我的代碼documentdb錯誤創建請求消息

function generateNumericId() { 
var counterDocumentId = 'numericIdCounter'; 
var counterDocumentLink = __.getSelfLink() + 'docs/' + counterDocumentId; 
__.readDocument(counterDocumentLink, {}, 
    function(err, counterDocument) { 
     if (err) throw new Error("Can't find counterDocument!"); 
     counterDocument.value += 1; 
     __.upsertDocument(counterDocumentLink, counterDocument); 
     var docToCreate = __.request.getBody(); 
     docToCreate.id = counterDocument.value.toString(); 
     __.request.setBody(docToCreate); 
    });} 

我的.NET代碼成功地註冊,但是當我運行插入操作 失敗「錯誤建立請求消息」異常。那麼,請告訴我我的代碼有什麼問題? (重要!我已經收集內部numericIdCounter文件,JS代碼失敗在readDocument功能!)

+0

js代碼在readDocument函數失敗請嘗試將錯誤詳細信息記錄到** docToCreate **字段並檢查是否可以從錯誤中找到有用的信息。 –

+0

但'__。readDocument'甚至沒有運行回調,所以我怎麼能記錄裏面的細節? –

回答

1

的第一個錯誤:__.getSelfLink() =>__.getAltLink()因爲getSelfLink()提供從內部_id領域建立路徑(這是不正常的我們 - 我們只知道計數器id,而不是內部的_id)。 getAltLink()允許我們構建類似以下的網址:dbs/mydb/colls/mycoll/docs/numericIdCounter而不是dbs/dLIxAA==/colls/dLIxAOFiYAA=/docs/dLIxAOFiYAABAAAAAAAAAA==/

第二個錯誤:__.upsertDocument(counterDocumentLink, counterDocument); =>__.upsertDocument(__.getAltLink(), counterDocument);剛剛檢查api文檔。