PouchDB如何决定对视图使用GET还是POST?

时间:2019-03-04 16:38:44

标签: pouchdb

PouchDB的map / reduce查询API可以将很长的GET参数发送到CouchDB,也可以进行POST。 PouchDB似乎在做另一件事。它是如何决定的,是否可以通过参数选择方法? https://pouchdb.com/api.html#query_database

1 个答案:

答案 0 :(得分:0)

当使用地图/缩小视图时未定义opts.keys选项时,PouchDB考虑使用POST,但它还会检查GET URL是否太长。不幸的是,使用stackoverflow.com选择的PouchDB的MAX_URL_LENGTH比CouchDB 2.3的最大长度长。因此,具有中等数量键的查询将使用GET并失败。没有强制执行一种或另一种方法的选项。

https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-abstract-mapreduce/src/index.js#L265

(对于何时将POST用于其他CouchDB API,PouchDB似乎有不同的规则)

我可以发送到CouchDB 2.3的最长GET请求是1335字节或1300字节,而没有协议,主机和端口。

事实证明,这是CouchDB 2.3中的回归,应在CouchDB 2.3.1中进行修复。 https://github.com/apache/couchdb/issues/1810