gpt4 book ai didi

CouchDb 获取 ID 以前缀开头的所有文档

转载 作者:行者123 更新时间:2023-12-04 13:19:08 28 4
gpt4 key购买 nike

我想获取 CouchDB 数据库中文档 ID 以给定前缀开头的所有文档。

搜索了一下发现,根据CouchDB Documentation ,最好的方法是使用 startkeyendkey,其中 startkey 是前缀,endkey 是在末尾附加高值 unicode 字符的前缀。

因此,据我所知,调用 "http://server:5984/some_db/_all_docs?startkey=2018&endkey=2018\ufff0&include_docs=true" 应该从 中获取所有文档>some_db ID 以“2018”开头。

该 url 被网络浏览器编码如下:http://server:5984/some_db/_all_docs?startkey=2018&endkey=2018%EF%BF%B0&include_docs=true

我得到的响应是 {"error":"bad_request","re​​ason":"invalid UTF-8 JSON"}

所以我试着坚持使用纯 ASCII 并使用 ~ 而不是 \ufff0。同样的回应。使用 z 也得到了相同的响应。

如果我执行类似 _all_docs?startkey=2018&endkey=2019&include_docs=true&inclusive_end=false 的操作,一切正常,我得到了预期的结果。但是,我不能保证前缀将始终是一个数字,而且我的印象是尝试以编程方式实现它会导致我在某些地方或某些方面出现问题。有什么想法吗?

我正在使用在 Web 浏览器中运行的 Dart 来发出请求,如果它有所不同的话。

更新

所以,我意识到实际上 _all_docs 不支持 endkeystartkey 参数。我原以为有效的请求实际上只是返回了整个数据库。

我假设 _all_docs 支持 startkey 和 andkey,因为我过去使用过 PouchDB,which doesallDocs() 函数中支持这些参数。

仍在寻找解决方案,因为这个项目使用 PouchDB,但至少现在我知道问题出在哪里。

更新2

之前的更新是错误的,虽然 _all_docs 的文档没有列出这些参数,但有一个我错过的注释表明它也支持 parameters for view ,请参阅下面的回答。

最佳答案

好吧,我明白了。

我的更新有误,startkeyendkey _all_docs 支持,因为它只是一个内置的- 在 View 中,因此适用于 View 的所有参数。但是,它希望传递的值是 JSON 值,而不仅仅是作为键的纯字符串。解决方案就是在键周围加上引号。

即编码引号,例如startkey=%222018%22&endkey=%222018%EF%BF%B0%22

关于CouchDb 获取 ID 以前缀开头的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56154873/

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