在 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-charge
)queryIterator.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);
}
});
}
我是第一次使用 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-charge
)queryIterator.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);
}
});
}