javascript - CouchDB 自动归档

标签 javascript couchdb

我有一个使用本地存储 (PouchDB) 的 Angular 应用程序,它会自动与远程服务器上的 CouchDB 数据库同步。

因为我想限制我的应用程序大小,所以我希望能够根据条件从 CouchDB 自动归档。

这是我想象的:

  • 我在我的 localDB 中保存了一个文件,该文件与我的 CouchDB 同步
  • 几天后,我告诉我的 localDB 存档这个文件
  • 我的 localDB 删除文件,CouchDB 在删除文件之前自动将文件复制到另一个内部数据库(不与 localDB 同步)。

你可以说我可以在我的应用程序中执行此操作,但问题是当应用程序离线使用时,它无法直接访问远程 CouchDB 以复制到另一个数据库。

所以我的问题是,CouchDB 能否根据文档中的值(例如 archived = true)自动将文档复制到另一个数据库(在同一个 CouchDB 中)?如果没有,您有什么建议?

最佳答案

要保留每个文档的最后一个未删除版本,您可以在“数据”和“备份”couchdb 数据库之间设置连续复制,并使用过滤器功能防止 _deleted 来自复制的文档,例如:

function(doc, req){
    return !doc._deleted
}

要专门保留具有 archive 属性集的文档,您需要调整过滤器功能:

function(doc, req){
    return !doc._deleted && doc.archive
}

但是,归档文档现在包含两个步骤:

  1. 将其保存为 archive 属性设置为您的 localDB,触发其复制到您的“数据”数据库(从而触发其复制到“备份”数据库)
  2. 实际从 localDB 中删除文档,将删除传播到“数据”数据库(使用过滤器功能防止删除传播到“备份”数据库)确认复制到“数据”数据库后 由于 couchdb 的 replication protocol 可能快进.

关于javascript - CouchDB 自动归档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907966/

相关文章:

javascript - 在 kanso couchapp 中使用 haml/jade

node.js - 使用 nock 模拟多个 couch 数据库请求

CouchDB View : total_rows vs offset vs rows?

javascript - 检索里面的产品ID

javascript - 如何在 JavaScript 中将文本格式化为多行

javascript - Couchbase 全局二级指数 (GSI) 与普通指数

javascript - 在Vue中使用箭头键选择div元素

javascript - CouchDB:将字段添加到 View 中的 "doc"

javascript - 如何在 map 函数中使用 require() ?

javascript - jQuery 连接对象值