javascript - 如何通过 Azure Cosmos DB 中的存储过程查询数据库

标签 javascript sql azure azure-cosmosdb

我正在尝试创建一个存储过程,我的应用程序可以调用该存储过程来在 azure 中的 SQL cosmos DB 上运行操作。我正在使用 Azure 门户进行开发。

我生成了一个示例程序,如下所示。

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

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

当我运行它时,我没有得到任何结果,但我在与此存储过程相同的树下的文档部分中创建了一个文档。当我运行存储过程时,我没有得到任何结果。我做错了什么?

最佳答案

您的存储过程代码与门户上的示例代码完全相同。它工作正常,没有任何问题。

enter image description here

也许您可以检查以下几点:

1.检查文档是否与存储过程在同一个集合下。(只需关闭其他不相关的标签,然后再检查即可!)

2.检查sqlselect * from root r是否可以抓取portal上的数据。

3.尝试创建一个新的集合和一个新的存储过程,然后检查情况是否恒定。

4.尝试使用console.log()来调试和跟踪存储过程,请引用我之前的案例:How to debug Azure Cosmos DB Stored Procedures?

<小时/>

作为总结,我们还需要检查执行查询sql时是否丢失分区键!

关于javascript - 如何通过 Azure Cosmos DB 中的存储过程查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52391653/

相关文章:

javascript 根据属性值从数组中删除所有对象

mysql - 候选键/减少

azure - Dynamic_template_data 不适用于 sendgrid 和 azure 函数集成

windows - 当我的角色 Azure VM 被回收时,其他 Azure 角色是否可以读取我的角色留下的未删除磁盘数据?

javascript - 未收到推送消息

javascript - 智能带宽节省 : how to stop HTML5 mp3 audio file from loading unneccessarily, 同时显示总长度持续时间?

Javascript 单位转换器

mysql - 优化 SQL 以获取行数

java - 结果集 : do {. ..} while (...);与 while(...) {...}

.net - SQL Azure 分页优化