Исключение из БД Cosmos при выполнении хранимой процедуры - PullRequest
0 голосов
/ 10 ноября 2018

Я использую SQL API Azure Cosmos DB. Я написал хранимую процедуру, получит данные и хранит в ответной ленте API.

Не удалось выполнить хранимую процедуру testProcedure для сбора iotcollection: { "Код": 400, "тело": "{\" код \ ": \" BadRequest \ "\ "сообщение \": \" Сообщение: {\\ "Ошибки \\": [\\ "Обнаружено исключение при выполнении функции. Исключение = Ошибка: Недостаточно памяти \\ r \\ nОтслеживание стека: undefined \\ "]} \ r \ nActivityId: c286cbb6-34c1-4929-a148-915544b20ce6, URI запроса: / Приложения / 59d3b9ef-17ca-4bbf-8a11-39d0199a8d29 / услуги / 1b26e00f-1f51-4d34-88ec-4090b8e7db00 / Перегородки / 45a313b7-2cf2-419e-9885-48bf9cfe6277 / Реплики / 131862936473830809p /, RequestStats: \ r \ nRequestStartTime: 2018-11-10T05: 46: 36.4852333Z, Количество предпринятых регионов: 1 \ r \ n, SDK: Microsoft.Azure.Documents.Common / 2.1.0.0 \ "}", "ActivityID": "c286cbb6-34c1-4929-a148-915544b20ce6"}

Моя хранимая процедура очень проста. Я просто хотел посмотреть, сколько записей я могу получить из базы данных космоса в данный момент времени и отправить в ответ.

    // SAMPLE STORED PROCEDURE
function sample(prefix) {
    var collection = getContext().getCollection();

    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT r.data FROM root r',
    function (err, feed, options) {
        if (err) throw err;

        // Check the feed and if empty, set the body to 'no docs found', 
        // else take 1st element from feed
        if (!feed || !feed.length) {
            var response = getContext().getResponse();
            response.setBody('no docs found');
        }
        else {
            var response = getContext().getResponse();
            var body = { prefix: prefix, feed: feed[0] };
            var str = 'str';
            for ( var i =0 ; i < 100 ; i = i +1 ){
                    str = str + str ;
                    body .str = feed[0];
            }

            response.setBody(JSON.stringify(body));
        }
    });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

1 Ответ

0 голосов
/ 12 ноября 2018

Я уверен, что причина ошибки Out-Of-Memory в том, что строка str слишком длинная во время вашего цикла. Кажется, что строка str бесполезна для вашего теста, который не добавляется в ответ.

Пожалуйста, удалите его, и хранимая процедура сэмпла будет работать нормально.

...