Хранимая процедура Azure Cosmos DB возвращает пустую коллекцию - PullRequest
2 голосов
/ 22 апреля 2019

Я попытался создать хранимую процедуру, используя пример кода создания sp из документов Azure, но я не смог получить сведения о коллекции. Всегда возвращает ноль.

Хранимая процедура

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

    // Query documents and take 1st item.
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT * 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] };
            response.setBody(JSON.stringify(body));
        }
    });

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

Консоль показывает только это. Console output

результаты показывают, что документ не найден из-за невозможности получения коллекции. Я передал ключ раздела во время выполнения через проводник.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

У меня была похожая проблема.Я думаю, что портал Azure не выполняет хранимые процедуры должным образом, когда ключом раздела является , а не строка.

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

0 голосов
/ 26 апреля 2019

Вы создали базу данных ToDoList с коллекцией Items? Йо может сделать это с помощью панели быстрого запуска на портале Azure.

Deploy Collection from Quick start blade

А затем создайте SP для запуска с этой коллекцией. Ключ разделения не требуется, поэтому дополнительные параметры не требуются (оставьте пустым).

Make sure you have a Collection created.

Коллекция создана без каких-либо документов. Вы можете добавить документы с помощью блейда Query Explorer или с помощью примера приложения ToDoList, доступного через блейд Quick Start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...