我正在尝试将特定用户的所有文档的属性设置为false。 我正在使用存储过程来执行相同的操作。 以下过程仅获取部分记录并进行更新。
我总共有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);
}
}
我想念什么?
答案 0 :(得分:1)
我创建了3000
个文档,它们用name
分区键进行了一半分区,以测试您的代码。
我建议您检查SQL结果在存储过程和查询Shell中是否一致。此外,您可以遵循How to debug Azure Cosmos DB Stored Procedures?的情况:使用console.log
来调试存储过程。 / p>
希望它对您有帮助。