从 CouchDB 读取和写入数据的有效方法

Efficient way to read+write data from CouchDB

我正在实施一个应用程序,该应用程序包括一个用户登录以访问存储在托管 CouchDB 存储中的文档。用户向应用程序提供他们的凭据,一旦应用程序对他们进行身份验证,应用程序就会有两个工作:

  1. 获取与该用户数据关联的文档 ID
  2. 更新存储在该文档中的 "lastOpened" 值

我不得不以一种看起来相当低效的方式来做这两件事:我阅读了一个将应用程序的用户标识符(在本例中为他们的电子邮件地址)映射到他们的文档 ID 的视图。一旦我有了文档 ID(并将其添加到会话中供以后使用),我就必须请求文档,提高 "lastOpened" 值,然后将文档保存回商店。

对我来说,这看起来像 3 次访问数据库:1. 从视图中获取文档 ID,2. 使用该 ID 获取文档,3. 保存更新的文档。

有没有办法将这项工作减少到更少的数据库访问?

That looks like 3 trips to the database to me: 1. Get the Document ID from the View, 2. Get the Document, using that ID, 3. Save the updated Document.

Is there anyway to reduce that work to fewer database trips?

您可以通过在请求中添加“?include_docs=true”查询参数来从视图中获取文档。所以两步而不是三步。

如果可以更改文档结构,则可以使用用户的登录名作为文档 ID。这样,您就不必使用视图。使用 update handlers,您甚至可以在一个请求中完成所有工作。