我正在尝试创建一个存储过程,我的应用程序可以调用该存储过程来在 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.');
}
当我运行它时,我没有得到任何结果,但我在与此存储过程相同的树下的文档部分中创建了一个文档。当我运行存储过程时,我没有得到任何结果。我做错了什么?
最佳答案
您的存储过程代码与门户上的示例代码完全相同。它工作正常,没有任何问题。
也许您可以检查以下几点:
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/