gpt4 book ai didi

angularjs - PouchDB startkey endkey 不返回文档

转载 作者:行者123 更新时间:2023-12-03 08:20:26 24 4
gpt4 key购买 nike

我在使用 startkey 和 endkey 从 PouchDB 中检索选定的几个文档时似乎遇到了问题。我需要使用以“配置文件”开头的 key 取回文档(在此示例中为 profile41 和 profile48)。

当使用 chrome PouchDB 扩展时,这在使用 startkey:"profile"和 endkey:"profile\0ffff"进行查询时工作正常,但出于某种原因,这在运行我的代码时不起作用( Angular/ ionic ).

我的代码返回一个空文档列表。当我设置开始键:“profile41”和结束键:“profile41”时,我确实取回了文档,所以我知道它已连接并可以从数据库中检索文档。

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"
}

我检索文档的 javascript

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"

当参数设置为时返回正确的单个文档

startkey = "profile41"
endkey = "profile41"

最佳答案

如果你想使用“descending:true”,你必须改变startkey和endkey的顺序。

确实,如果你不使用“descending:true”你的 B-Tree 看起来像这样:

1-  animaltypes
2 - profile41
3 - profile48
  • startkey="profile"将在 id 1 和 id 2 之间
  • endkey="profile\0ffff"将在 id 3 之后

结果你将有 2 条记录

如果你使用“descending=true”你的 B-Tree 看起来像这样:

1-  profile48
2 - profile41
3 - animaltypes
  • startkey="profile"将在 id 2 和 id 3 之间
  • endkey="profile\0ffff"将在 id 2 和 id 3 之后

结果你将有 0 条记录。

关于angularjs - PouchDB startkey endkey 不返回文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com