我尝试使用Azure文档中的示例sp创建代码创建存储过程,但无法获取集合详细信息。它总是返回null。
// 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.');
}
结果显示由于未收集而未找到任何文档。我在执行时通过资源管理器传递了分区键。
答案 0 :(得分:0)
您是否使用ToDoList
集合创建了Items
数据库?可以从Azure门户的“快速入门”刀片中执行此操作。
然后创建一个SP来对该集合运行。不需要分区键,因此不需要其他参数(保留空白)。
创建的集合没有任何文档。您可以选择通过Query Explorer刀片或通过快速入门刀片可用的示例ToDoList App添加文档。
答案 1 :(得分:0)
我有一个类似的问题。我认为当分区键为不是字符串时,Azure门户无法正确执行存储过程。
在我的情况下,我有一个为数字的partitionKey。当我通过门户网站执行存储过程时,即使我的数据库中有文档,我也总是得到一个空的resultSet。当我稍稍更改结构并将我的partitionKey设置为字符串时,存储过程可以正常工作。
答案 2 :(得分:0)
您的调试方式错误。
在控制台日志中看到 "{\"spatial\":{}}"
完全没问题,即使集合中有项目。为什么?好吧,因为那是那个对象的一个属性。
关于你所说的:
<块引用>结果显示没有找到文档,因为没有得到集合
是假的。我有相同的控制台日志文本,但我的收藏中有项目。
对于您的存储过程为何不返回任何项目,我有两种情况:
new PartitionKey("/UserId")
而不是你的对象,即。 new PartitionKey(stock.UserId)