Azure cosmosdb 在node.js中,如何从调用DocumentClient.queryDocuments()中获取请求单位费用?

Azure cosmosdb 在node.js中,如何从调用DocumentClient.queryDocuments()中获取请求单位费用?,azure-cosmosdb,request-unit,Azure Cosmosdb,Request Unit,这是我第一次使用。我以前使用过readDocument()、executeStoredProcedure()、replaceStoredProcedure()等,所有这些都返回了一个header对象,允许您检查“x-ms-request-charge”header以识别操作的请求单位费用。但是,当使用queryDocuments()或readDocuments()方法时,它返回一个QueryIterator,我看不到检查它以查看操作的RU的方法 我怀疑原因是这不是一次行动。这是一系列操作,您没有

这是我第一次使用。我以前使用过readDocument()、executeStoredProcedure()、replaceStoredProcedure()等,所有这些都返回了一个header对象,允许您检查“x-ms-request-charge”header以识别操作的请求单位费用。但是,当使用queryDocuments()或readDocuments()方法时,它返回一个QueryIterator,我看不到检查它以查看操作的RU的方法


我怀疑原因是这不是一次行动。这是一系列操作,您没有实现一种方法来聚合整个事件的总RU。我愿意自己直接点击REST API来获取它,但在我遇到麻烦之前,我想问一下是否有办法通过当前库获取它。

您可以检查响应头(例如
x-ms-request-charge
)通过检查
queryIterator.executeNext()
回调中的第三个输入参数

例如,下面是一个代码示例,它使用响应头(
x-ms-retry-after-ms
)在节流阀上实现重试逻辑(错误429)


谢谢我提交了一个请求来更新executeNext()的文档。它现在说,“需要两个参数错误,resourcesList”。我注意到我上次的文档修复请求从未被合并,所以我将其添加到了最新版本中。
var queryIterator = documentClient.queryDocuments(collection._self, query);
executeNextWithRetry(yourCallback);

function executeNextWithRetry(callback) {
    queryIterator.executeNext(function(err, results, responseHeaders) {
        if(err && err.code === 429 && responseHeaders['x-ms-retry-after-ms']) {

            console.log("Retrying after " + responseHeaders['x-ms-retry-after-ms']);

            setTimeout(function() {
                executeNextWithRetry(callback);
            }, responseHeaders['x-ms-retry-after-ms']);

        } else {
            callback(err, results, responseHeaders);
        }
    });
}