我有一个使用本地存储 (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
}
但是,归档文档现在包含两个步骤:
- 将其保存为
archive
属性设置为您的 localDB,触发其复制到您的“数据”数据库(从而触发其复制到“备份”数据库) - 实际从 localDB 中删除文档,将删除传播到“数据”数据库(使用过滤器功能防止删除传播到“备份”数据库)确认复制到“数据”数据库后 由于 couchdb 的 replication protocol 可能快进.
关于javascript - CouchDB 自动归档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907966/