Stored procedure azure Cosmos DB returns empty collection

萝らか妹 提交于 2019-12-22 09:57:18

问题


I tried to create a stored procedure using the sample sp creation code from Azure docs, but i couldn't fetch the collection details. It always returns null.

Stored Procedure

// 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.');
}

The console shows only this.

the results shows no doc found because of not getting collection.I have passed the partition key at time of execution via explorer.


回答1:


I had a similar issue. I think the Azure portal doesn't execute stored procedures properly when the partition key is not a string.

In my case I had a partitionKey that is a number. When I executed the stored procedure via the portal I always got an empty resultSet, even though I had documents in my database. When I changed the structure a little, and made my partitionKey a string, the stored procedure worked fine.




回答2:


Did you create the ToDoList Database with the Items Collection? Yo can do this from the Quick start blade in the Azure portal.

And then create an SP to run against that collection. There is no partition key required, so no additional params are required (leave blank).

The Collection is created without any documents. You may choose to add documents via the Query Explorer blade or via the sample ToDoList App that is available via the Quick start blade.



来源:https://stackoverflow.com/questions/55789136/stored-procedure-azure-cosmos-db-returns-empty-collection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!