【问题标题】:Can you use CouchDB 'document update handlers' with replication?您可以将 CouchDB 的“文档更新处理程序”与复制一起使用吗?
【发布时间】: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。跨度>

标签: couchdb


【解决方案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(原始请求中的一个参数)
  • 哦。整洁的。 :) 如果您认为它有用,介意在这里接受我的回答吗?我会很感激的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
相关资源
最近更新 更多