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

In node.js, how do I get Request Unit Charges from call to DocumentClient.queryDocuments()?

我是第一次使用 queryDocuments() method from the node.js client。我以前使用过 readDocument()、executeStoredProcedure()、replaceStoredProcedure() 等,所有这些 return a header object 允许您检查 'x-ms-request-charge' header 识别操作的请求单位费用。但是,当使用 queryDocuments() 或 readDocuments() 方法时,它 return 是一个 QueryIterator,我看不到一种方法来检查它以查看操作的 RU。

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

您可以通过检查 callback 中的第三个输入参数来检查响应 headers(例如 x-ms-request-chargequeryIterator.executeNext()

例如,这里是一个代码示例,它使用响应 header (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);
        }
    });
}