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

时间:2015-07-10 18:30:22

标签: azure-cosmosdb request-unit

我第一次使用queryDocuments() method from the node.js client。我之前使用过readDocument(),executeStoredProcedure(),replaceStoredProcedure()等等,所有这些都返回一个头对象,允许你检查'x-ms-request-charge'标题来识别请求单元的费用操作。但是,当使用queryDocuments()或readDocuments()方法时,它返回一个QueryIterator,我没有看到检查它以查看操作的RU的方法。

我怀疑这是因为它不是一个操作。这是一系列操作,您没有实现聚合整个RU的总RU的方法。我愿意直接点击REST API来自己解决这个问题,但我想问一下,在我遇到麻烦之前是否有办法让当前的库得到它。

1 个答案:

答案 0 :(得分:2)

您可以通过检查x-ms-request-charge callback中的第三个输入参数来检查回复标题(例如queryIterator.executeNext())。

例如,这是一个代码示例,它使用响应头(x-ms-retry-after-ms)来实现对节流的重试逻辑(错误429)。

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);
        }
    });
}