如何在 pouchDB 中查询复杂的键?

web*_*oob 1 couchdb nosql pouchdb

如果我要提出一个 get 请求,我会做这样的事情:

https://myserver.com/sometestdb/_design/sortJob/_view/index?limit=100&reduce=false& startkey=["job_price"]&endkey=["job_price", {}]

对于地图查询,如:

function(doc) {
    if (doc.data.type === "job") {
        emit(["job_ref", doc.data.ref], null);
        emit(["job_price", doc.data.price], null);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将如何使用 pouchDb查询复制查询?我在开始和结束键周围尝试了一些东西,但没有运气:

{
  include_docs: true,
  startkey: 'job_price',
  endkey: 'job_price,{}'
}

{
  include_docs: true,
  startkey: 'job_price',
  endkey: 'job_price\uffff'
}
Run Code Online (Sandbox Code Playgroud)

这两个都返回 0 结果,而我使用的链接产生了预期的结果。

注意:我可以确认数据存在于我的 pouchDB 中,因为我已经使用pouch-find插件对其进行了查询,但我正在尝试各种技术以查看哪个更快。

编辑:根据文档中的复杂键部分,我应该能够执行以下操作:

{
  include_docs: true,
  startkey: '[\'job_price\']',
  endkey: '[\'job_price\',{}]'
}
Run Code Online (Sandbox Code Playgroud)

但这导致:

没有行可以匹配您的键范围,反转您的 start_key 和 end_key 或设置 {descending : true}

但是我应该能够得到这样的结果并且不想要descending: true.

web*_*oob 5

好的,这是我对文档的阅读。

在构建开始/结束键时,您需要传递数组,而不是将数组作为字符串传递(我认为 pouchDB 然后eval'd.

这是工作查询:

{
  include_docs: true,
  startkey: ['job_price'],
  endkey: ['job_price', {}]
}
Run Code Online (Sandbox Code Playgroud)

发布此答案而不是删除问题,因为它可能对其他人有所帮助。