documentdb错误创建请求消息

时间:2017-04-20 23:24:33

标签: azure-cosmosdb

我正在尝试编写一些预插入触发器(为集合中的每个文档生成数字ID),注册它并使用DocumentDB .NET SDK运行。我正在使用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代码注册成功,但是当我正在运行插入操作时 它失败并显示“Error creating request message”异常。那么,请告诉我我的代码有什么问题? (!重要提示:我已经在集合中有了numericIdCounter文档,js代码在readDocument函数中失败了!)

1 个答案:

答案 0 :(得分:3)

第一个错误:__.getSelfLink() => __.getAltLink()因为getSelfLink()提供了从内部_id字段构建的路径(对我们来说不合适 - 我们只知道计数器id,而不是内部_id)。 getAltLink()允许我们构建以下网址:dbs/mydb/colls/mycoll/docs/numericIdCounter而不是dbs/dLIxAA==/colls/dLIxAOFiYAA=/docs/dLIxAOFiYAABAAAAAAAAAA==/

第二个错误:__.upsertDocument(counterDocumentLink, counterDocument); =>在检查api文档之后__.upsertDocument(__.getAltLink(), counterDocument);