Хранимая процедура базы данных документа с токеном продолжения не может обновить все записи

Я пытаюсь установить для свойства всех документов конкретного пользователя значение 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);
    }
}

Что мне не хватает?


person sham    schedule 04.07.2018    source источник
comment
Вы можете проверить, было ли 429 ошибок во время выполнения sp? каково значение response.StatusCode?   -  person Olha Shumeliuk    schedule 04.07.2018
comment
@sham Привет, есть прогресс?   -  person Jay Gong    schedule 06.07.2018
comment
@JayGong, в Prod Environment ни у одного из пользователей нет такого количества записей. Не было возможности вникнуть в это   -  person sham    schedule 06.07.2018
comment
@sham Жду результатов теста...   -  person Jay Gong    schedule 09.07.2018
comment
@sham Есть какие-нибудь обновления? Помогает ли вам мой ответ?   -  person Jay Gong    schedule 13.08.2018


Ответы (1)


Я создал 3000 документов, которые наполовину разделены по name ключу раздела, чтобы проверить ваш код. Он работает нормально.

введите здесь описание изображения

Я предлагаю вам проверить, соответствует ли результат SQL работе в хранимой процедуре и в оболочке запроса. Кроме того, вы можете выполнить этот случай azure-cosmos-db-stored-procedures/47861690#47861690">Как отлаживать хранимые процедуры Azure Cosmos DB? : чтобы использовать console.log для отладки хранимой процедуры.

Надеюсь, это поможет вам.

person Jay Gong    schedule 05.07.2018