存储过程azure Cosmos DB返回空集合

问题描述 投票:1回答:1

我尝试使用Azure文档中的示例sp创建代码创建存储过程,但我无法获取集合详细信息。它总是返回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.');
}

控制台仅显示此信息。 Console output

结果显示没有找到doc因为没有收集。我在执行时通过explorer传递了分区键。

javascript stored-procedures azure-cosmosdb
1个回答
0
投票

你用qazxsw poi Collection创建了qazxsw poi数据库吗?您可以从Azure门户中的快速启动刀片执行此操作。

ToDoList

然后创建一个SP来对该集合运行。不需要分区键,因此不需要额外的参数(留空)。

Items

创建的集合没有任何文档。您可以选择通过查询资源管理器刀片或通过快速启动刀片提供的示例ToDoList应用程序添加文档。


0
投票

我有一个类似的问题。我认为当分区键不是字符串时,Azure门户不会正确执行存储过程。

在我的情况下,我有一个数字partitionKey。当我通过门户网站执行存储过程时,我总是得到一个空的resultSet,即使我的数据库中有文档。当我稍微更改结构,并使我的partitionKey成为一个字符串时,存储过程工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.