您可以将 CouchDB 'document update handlers' 与复制一起使用吗?

Can you use CouchDB 'document update handlers' with replication?

我正在将文档从数据库 A 复制到数据库 B,每次来自数据库 A 的文档到达数据库 B 时,我想 运行 'stored procedure' 从数据库 A 中删除大部分字段(数据库 A 是私有的,但有我想公开的附件)

到目前为止,我已经看到这可以通过使用 _changes 提要(连续)然后 运行在每个文档上设置一个 'update' 处理程序来实现。

文档更新处理程序文档:https://wiki.apache.org/couchdb/Document_Update_Handlers

这似乎是 CouchDB 会为我实现的东西...(我还不确定如何执行上述操作)。

是否有类似 'hook' 的东西可以 运行 在每个进入数据库的文档上?

== 编辑 ==

我似乎想以某种方式在复制触发器中包含更新处理程序命令?

这听起来像是对存储文档的方式进行一些更改,您可能能够从 CouchDB 的过滤复制中受益。您需要将附件存储在可以在两个数据库之间等效复制(无需修改)的文档中。

如果这不是一个选项,那么您可以使用 transform-pouchdb plus PouchDB's .replicate.from() 方法来管理复制。

这个想法的一些快速伪代码看起来有点像这样:

var PouchDB = require('pouchdb');
PouchDB.plugin(require('transform-pouch'));

var dbA = new PouchDB('a'); // "a" could be a URL to CouchDB or Cloudant
var dbB = new PouchDB('b');

dbB.transform({
  incoming: function (doc) {
    // do something to the document before storage
    return doc;
  }
});

dbB.replicate.from(dbA);

理论上,那个(或类似的东西)应该做你想做的事......或者至少给你一个框架来做你想做的事。 ^_^

希望对您有所帮助!