如何解决Cosmos DB:getContextgetCollectionqueryDocuments不返回SP中的项目
我刚开始使用Cosmos DB,为什么不通过简单的SP查询就无法返回任何文档,我感到困惑。
这就是我所做的:
- 使用分区键“ / id”创建的Cosmos DB数据库
- 创建目录“家庭”
- 创建了两个项目:
{
"id": "AndersenFamily","lastName": "Andersen","parents": [
{
"firstName": "Thomas"
},{
"firstName": "Mary Kay"
}
],"children": [
{
"firstName": "Henriette Thaulow","gender": "female","grade": 5,"pets": [
{
"givenName": "Fluffy"
}
]
}
],"address": {
"state": "WA","county": "King","city": "Seattle"
},"creationDate": 1431620472,"isRegistered": true
},{
"id": "WakefieldFamily","parents": [
{
"familyName": "Wakefield","givenName": "Robin"
},{
"familyName": "Miller","givenName": "Ben"
}
],"children": [
{
"familyName": "Merriam","givenName": "Jesse","grade": 1,"pets": [
{
"givenName": "Goofy"
},{
"givenName": "Shadow"
}
]
},"givenName": "Lisa","grade": 8
}
],"address": {
"state": "NY","county": "Manhattan","city": "NY"
},"creationDate": 1431620462,"isRegistered": false
}
- 正在运行的查询“ SELECT * FROM c”将按预期返回两条记录
- 但是,SP以下的queryDocuments方法始终检索提要的零长度。为什么两个项目都没有退回?
// SAMPLE STORED PROCEDURE
function sample(prefix) {
// Query documents and take 1st item.
var isAccepted = getContext().getCollection().queryDocuments(
getContext().getCollection().getSelfLink(),'SELECT * FROM root r',function (err,feed,options) {
if (err) throw err;
console.log("Feed length: " + feed.length);
// 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.');
}
非常感谢您的帮助!
解决方法
Cosmos db中的
SP基于分区键工作,这意味着将返回分区中的所有文档,而不是跨分区的文档。您可以按照以下屏幕截图中的说明执行SP。根据官方文档 “,对于分区容器,在执行存储过程时,必须在请求选项中提供分区键值。存储过程始终限于分区键。具有不同分区的项目键值对存储过程将不可见。这也适用于触发器。“
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。