Couchdb 在文档更新处理程序中获取文档

Couchdb 在文档更新处理程序中获取文档,couchdb,Couchdb,是否可以从CouchDB中的文档更新处理程序中查询(获取)文档 我在CouchDB 2.0中编写了一个简单的文档更新处理程序,用于接受来自第三方(CognitoForms)的帖子。这很好,我从他们的JSON负载中获取ID并将其用作doc\u ID 然后,您可以在CognitoForms中指定一个“更新”URI,这样我就可以创建一个新的更新处理程序或使用相同的更新处理程序。然而,在同源形式中: 更新执行POST而不是PUT 似乎没有发送任何查询参数的方法 由于需要更新的文档的ID在主体中,我可以

是否可以从CouchDB中的文档更新处理程序中查询(获取)文档

我在CouchDB 2.0中编写了一个简单的文档更新处理程序,用于接受来自第三方(CognitoForms)的帖子。这很好,我从他们的JSON负载中获取ID并将其用作doc\u ID

然后,您可以在CognitoForms中指定一个“更新”URI,这样我就可以创建一个新的更新处理程序或使用相同的更新处理程序。然而,在同源形式中:

  • 更新执行POST而不是PUT
  • 似乎没有发送任何查询参数的方法
由于需要更新的文档的ID在主体中,我可以使用它来查询文档的数据库,获取_rev,并返回带有_ID和_rev的有效负载以执行更新。但是,我不知道是否可以在更新处理程序中执行这样的查询。我觉得我要么错过了一些明显的东西,要么有一个很好的理由不允许我这么做

非常感谢


编辑:我应该补充一点,我知道我可以创建一个小应用程序来解析请求,然后再转发到couchdb,但我很想看看我是否可以在couchdb中实现这个功能,只是为了了解在没有其他层的情况下我能走多远

在您的特殊情况下,很难做到这一点。文档更新处理程序基本上是一个纯函数,它获取所需的数据并返回响应,但它无法进入数据库

如果向url添加文档id,则更新函数将从数据库中获取文档作为参数。有关详细信息,请参阅

一种可能的解决方案是在CouchDB中使用重写,以便从主体中提取id。在CouchDB 2.0中,一种新的方法


为了达到极限,使用重写函数听起来很有趣。但是对于生产用例,创建一个解析正文的node.js小应用程序可能更容易、更易于维护。

回答得好,非常感谢。真的很高兴知道重写功能,因为它不知怎么从我身边经过。我同意,这可能不是生产使用的最佳选择,但看一看肯定很有趣。