您可以将 CouchDB 的“文档更新处理程序”与复制一起使用吗?
Posted
技术标签:
【中文标题】您可以将 CouchDB 的“文档更新处理程序”与复制一起使用吗?【英文标题】:Can you use CouchDB 'document update handlers' with replication? 【发布时间】:2016-02-22 15:56:12 【问题描述】:我正在将文档从 DB A 复制到 DB B,每次来自 DB A 的文档到达 DB B 时,我都想运行一个“存储过程”来删除 DB A 中的大部分字段(DB A 是私有的,但有我想公开的附件)
到目前为止,我已经看到这可以使用 _changes 提要(连续)然后在每个文档上运行“更新”处理程序来实现。
文档更新处理程序文档:https://wiki.apache.org/couchdb/Document_Update_Handlers
这似乎是 CouchDB 将为我实现的东西......(我还不确定如何执行上述操作)。
是否可以在进入数据库的每个文档上运行类似于“挂钩”的东西?
== 编辑 ==
似乎我想以某种方式在复制触发器中包含更新处理程序命令?
【问题讨论】:
您不能在复制期间使用更新处理程序,您可能需要一个单独的进程来读取来自 DB A 的_changes
提要并将文档推送到 DB B。跨度>
【参考方案1】:
这听起来像是对存储文档的方式进行了一些更改,您可能能够从 CouchDB 的过滤复制中受益。您需要将附件存储在可以在两个数据库之间等效复制(无需修改)的文档中。
如果这不是一个选项,那么您可能会使用transform-pouchdb 加上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);
理论上,那个(或类似的东西)应该做你想做的事……或者至少给你一个框架来做你想做的事。 ^_^
希望有帮助!
【讨论】:
谢谢。我所做的是提供一个登录页面,该页面会在成功的身份验证中将您重定向到正确的 url(原始请求中的一个参数) 哦。整洁的。 :) 如果您认为它有用,介意在这里接受我的回答吗?我会很感激的。 :)以上是关于您可以将 CouchDB 的“文档更新处理程序”与复制一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
Django & Couchdb:如何在没有 Apache 服务器的情况下进行部署