在文档更新处理程序中获取文档
GETting a document within a Document Update Handler
是否可以从 CouchDB 中的文档更新处理程序中查询 (GET) 文档?
我在 CouchDB 2.0 中编写了一个简单的文档更新处理程序来接受来自第三方 (CognitoForms) 的 POST。这工作正常,我从他们的 JSON 有效负载中获取 ID 并将其用作文档 _id。
然后您可以在 CognitoForms 中指定一个 'update' URI,这样我就可以创建一个新的更新处理程序或使用相同的更新处理程序。但是,在 CognitoForms 中:
- 更新执行 POST 而不是 PUT
- 似乎没有办法发送任何查询参数
由于需要更新的文档的 ID 在正文中,我可以使用它来查询数据库中的文档,获取 _rev,以及 return 带有 _id 和 _rev 的负载执行更新。但是,我只是不知道我是否可以在更新处理程序中执行这样的查询。我觉得我要么遗漏了一些明显的东西,要么有一个很好的理由不允许我这样做。
非常感谢
编辑:我应该补充一点,我知道我可以创建一个小应用程序来在转发到 couchdb 之前解析请求,但我有兴趣看看我是否可以在 couchdb 中实现它只是为了了解我能走多远没有另一层!
在您的特定情况下,很难做到这一点。文档更新处理程序基本上是一个纯函数,可以获取所需的数据和 returns 响应,但它无法访问数据库。
如果您将文档 ID 添加到 url,更新函数会从数据库中获取文档作为参数。有关详细信息,请参阅 the CouchDB docs for update functions。
可能的解决方案是在 CouchDB 中使用重写,以便从正文中提取 ID。在 CouchDB 2.0 中,rewrites as functions has been introduced.
的新方法
为了突破极限,为此使用重写函数听起来很有趣。但是对于生产用例,创建一个解析正文的小型 node.js 应用程序可能更容易且更易于维护。
是否可以从 CouchDB 中的文档更新处理程序中查询 (GET) 文档?
我在 CouchDB 2.0 中编写了一个简单的文档更新处理程序来接受来自第三方 (CognitoForms) 的 POST。这工作正常,我从他们的 JSON 有效负载中获取 ID 并将其用作文档 _id。
然后您可以在 CognitoForms 中指定一个 'update' URI,这样我就可以创建一个新的更新处理程序或使用相同的更新处理程序。但是,在 CognitoForms 中:
- 更新执行 POST 而不是 PUT
- 似乎没有办法发送任何查询参数
由于需要更新的文档的 ID 在正文中,我可以使用它来查询数据库中的文档,获取 _rev,以及 return 带有 _id 和 _rev 的负载执行更新。但是,我只是不知道我是否可以在更新处理程序中执行这样的查询。我觉得我要么遗漏了一些明显的东西,要么有一个很好的理由不允许我这样做。
非常感谢
编辑:我应该补充一点,我知道我可以创建一个小应用程序来在转发到 couchdb 之前解析请求,但我有兴趣看看我是否可以在 couchdb 中实现它只是为了了解我能走多远没有另一层!
在您的特定情况下,很难做到这一点。文档更新处理程序基本上是一个纯函数,可以获取所需的数据和 returns 响应,但它无法访问数据库。
如果您将文档 ID 添加到 url,更新函数会从数据库中获取文档作为参数。有关详细信息,请参阅 the CouchDB docs for update functions。
可能的解决方案是在 CouchDB 中使用重写,以便从正文中提取 ID。在 CouchDB 2.0 中,rewrites as functions has been introduced.
的新方法为了突破极限,为此使用重写函数听起来很有趣。但是对于生产用例,创建一个解析正文的小型 node.js 应用程序可能更容易且更易于维护。