我似乎在使用startkey和endkey从PouchDB中检索选定的几个文档时遇到问题。我需要使用以“profile”开头的密钥(在此示例中为profile41& profile48)返回文档。
使用chrome PouchDB扩展时,使用startkey进行查询时可以正常工作:“profile”和endkey:“profile \ 0ffff”,但由于某些原因,这在运行我的代码时不起作用(角度/离子) )。
我的代码返回一个空文档列表。当我设置启动键:“profile41”和endkey:“profile41”我确实得到了doc,所以我知道它连接并且可以从DB中检索文档。
PS:首先使用PouchDB,所以我可能忽略了一些简单的事情。{
"_id": "animaltypes",
"_rev": "7-e413c314272a62a6a14ed293f5f934cf",
"value": {
"rev": "7-e413c314272a62a6a14ed293f5f934cf"
},
"key": "animaltypes"
}
{
"_id": "profile41",
"_rev": "3-f4065b825d304d79479e3576409ce744",
"value": {
"rev": "3-f4065b825d304d79479e3576409ce744"
},
"key": "profile41"
}
{
"_id": "profile48",
"_rev": "3-5e62a6e33f022a8ac30d46b80126dedd",
"value": {
"rev": "3-5e62a6e33f022a8ac30d46b80126dedd"
},
"key": "profile48"
}
this.getData = function(keystart,keyend){
var deferred = $q.defer();
localDB.allDocs({include_docs: true,
descending: true,
startkey:keystart,
endkey:keyend}, function(err, doc) {
if (err) {
deferred.reject(err);
} else {
var rows = [];
for (var x in doc.rows) {
rows.push(doc.rows[x].doc.data);
}
deferred.resolve(rows);
}
});
return deferred.promise;
};
这将返回一个带有以下参数的空数组
startkey = "profile"
endkey = "profile\0ffff"
当参数设置为
时,返回正确的单个docstartkey = "profile41"
endkey = "profile41"
答案 0 :(得分:3)
如果你想使用"降序:真"你必须改变startkey和endkey的顺序。
确实,如果您不使用"降序:true" 您B-Tree看起来像这样:
1- animaltypes
2 - profile41
3 - profile48
结果你将有2条记录
如果您使用" descending = true" ,B-Tree看起来像这样:
1- profile48
2 - profile41
3 - animaltypes
结果你将有0记录。