Azure cosmosdb 具有延续令牌的文档数据库存储过程无法更新所有记录

Azure cosmosdb 具有延续令牌的文档数据库存储过程无法更新所有记录,azure-cosmosdb,document-database,Azure Cosmosdb,Document Database,我试图将特定用户的所有文档的属性设置为false。 我正在使用存储过程来做同样的事情。 下面的过程仅获取部分记录并更新它们 function spBulkUpdateTrackInventory(tenantId) { var queryDocument = " select * from c where c.tenantId = '" + tenantId + "'"; var collection = getContext().getCollection(); var

我试图将特定用户的所有文档的属性设置为false。 我正在使用存储过程来做同样的事情。 下面的过程仅获取部分记录并更新它们

function spBulkUpdateTrackInventory(tenantId) {
    var queryDocument = " select * from c where c.tenantId = '" + tenantId + "'";
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();

    var responseBody = {
        updatedCount: 0,
        continuation: true
    };

    fetchProducts();

    function fetchProducts(continuation) {

        var requestOptions = { continuation: continuation, pageSize:-1};

        var isAccepted = collection.queryDocuments(collection.getSelfLink(), queryDocument, requestOptions,
            function (err, retrievedDocs, responseOptions) {
                if (err) throw new Error("Error" + err.message);

                if (retrievedDocs.length > 0)
                {
                    updateTrackInventory(retrievedDocs, responseOptions.continuation);
                }
            });
        if (!isAccepted) getContext().getResponse().setBody(responseBody);
    }

    function updateTrackInventory(documents, continuation) {
            for (var cnt = 0; cnt < documents.length; cnt++)
            {
                newdocument = documents[cnt];
                newdocument.trackInventory = true;
                responseBody.updatedCount++;
                var isAccepted = collection.replaceDocument(documents[cnt]._self, newdocument);

                if (!isAccepted) {
                    response.setBody(responseBody);
                }
            }

            if (continuation) {
                fetchProducts(continuation);
            }
        responseBody.continuation = false;
        response.setBody(responseBody);
    }
}
我总共有2399份文件。但该过程仅获取1332个数据并进行更新

function spBulkUpdateTrackInventory(tenantId) {
    var queryDocument = " select * from c where c.tenantId = '" + tenantId + "'";
    var collection = getContext().getCollection();
    var collectionLink = collection.getSelfLink();
    var response = getContext().getResponse();

    var responseBody = {
        updatedCount: 0,
        continuation: true
    };

    fetchProducts();

    function fetchProducts(continuation) {

        var requestOptions = { continuation: continuation, pageSize:-1};

        var isAccepted = collection.queryDocuments(collection.getSelfLink(), queryDocument, requestOptions,
            function (err, retrievedDocs, responseOptions) {
                if (err) throw new Error("Error" + err.message);

                if (retrievedDocs.length > 0)
                {
                    updateTrackInventory(retrievedDocs, responseOptions.continuation);
                }
            });
        if (!isAccepted) getContext().getResponse().setBody(responseBody);
    }

    function updateTrackInventory(documents, continuation) {
            for (var cnt = 0; cnt < documents.length; cnt++)
            {
                newdocument = documents[cnt];
                newdocument.trackInventory = true;
                responseBody.updatedCount++;
                var isAccepted = collection.replaceDocument(documents[cnt]._self, newdocument);

                if (!isAccepted) {
                    response.setBody(responseBody);
                }
            }

            if (continuation) {
                fetchProducts(continuation);
            }
        responseBody.continuation = false;
        response.setBody(responseBody);
    }
}
函数spBulkUpdateTrackInventory(tenantId){
var queryDocument=“从c中选择*,其中c.tenantId=”+tenantId+”;
var collection=getContext().getCollection();
var collectionLink=collection.getSelfLink();
var response=getContext().getResponse();
var responseBody={
updatedCount:0,
续:对
};
获取产品();
函数产品(续){
var requestOptions={continuation:continuation,pageSize:-1};
var isAccepted=collection.queryDocuments(collection.getSelfLink()、queryDocument、requestOptions、,
函数(err、retrievedDocs、responseOptions){
如果(错误)抛出新错误(“错误”+错误消息);
如果(retrievedDocs.length>0)
{
updateTrackInventory(retrievedDocs、responseOptions.continuation);
}
});
如果(!isAccepted)getContext().getResponse().setBody(responseBody);
}
函数updateTrackInventory(文档,续){
对于(var cnt=0;cnt

我缺少什么?

我创建了
3000
文档,这些文档通过
name
分区键进行了半分区,以测试代码。它工作正常

我建议您检查存储过程和查询shell中运行的SQL结果是否一致。此外,您可以遵循以下情况:使用
console.log
调试存储过程


希望它能帮助您。

您能检查一下sp执行过程中是否有429个错误吗?response.StatusCode的值是多少?@sham Hi,现在有什么进展吗?@JayGong,在Prod环境中,没有一个用户有这么多记录。没有机会调查it@sham正在等待您的测试结果…@sham现在有更新吗?我的回答对你有帮助吗?