你可以将CouchDB'文档更新处理程序'与复制一起使用吗?

时间:2016-02-22 15:56:12

标签: couchdb

我正在将DB A中的文档复制到DB B,每次DB A中的Doc到达DB BI时都想运行“存储过程”以从DB A中删除大部分字段(DB A是私有的,但是我希望公开的附件

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

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

这似乎是CouchDB为我实现的......(我现在还不确定如何做到这一点)。

是否有类似“钩子”的东西可以在进入数据库的每个文件上运行?

==编辑==

似乎我想以某种方式在复制触发器中包含update handler命令?

1 个答案:

答案 0 :(得分:1)

对于您可能的存储文档如何能够从CouchDB的过滤复制中受益,这听起来有些变化。您需要将附件存储在两个数据库之间可以等效复制(无需修改)的文档中。

如果这不是一个选项,那么您可以使用transform-pouchdbPouchDB'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);

从理论上讲,(或类似的东西)应该做你想要的......或者至少给你一个框架,你可以做你想要的。 ^ _ ^

希望有所帮助!