在PouchDB中同步网关“通道”

时间:2014-04-17 21:05:20

标签: couchbase pouchdb couchbase-sync-gateway

Pouch DB中是否支持Couchbase Sync Gateway的“频道”? 我希望能够使用看到整体数据的一个子集,如果他们创建新数据,以便能够与他们共享的人分享。

PouchDB有可能吗?或者我是否必须直接与服务器交互或使用couchbase lite用于移动设备?

4 个答案:

答案 0 :(得分:3)

PouchDB是在CouchDB之后建模的,CouchDB没有通道的概念,因此没有计划在PouchDB中实现它。

但是,解决问题的一种简单方法是将PouchDB同步到CouchDB,然后将其同步到Couchbase Sync Gateway。您需要CouchDB作为中介的原因是直接PouchDB< - >存在一些问题。 Couchbase同步网关同步,但希望它们很快得到解决(参见例如thisthis)。

答案 1 :(得分:3)

稍微更新:现在可以了,PouchDB(自版本V3.4.0起)现在与同步网关兼容。

请参阅此处的教程:http://blog.couchbase.com/first-steps-with-pouchdb--sync-gateway-todomvc-todolite

答案 2 :(得分:2)

以下是通过用户频道使小袋数据库客户端与Couchbase Sync Gateway协同工作的解决方案:

iconForFileType

这里的关键是你只需通过过滤器& query_params就是这样,无论如何,Sync Gateway都能够理解这个过滤器。

答案 3 :(得分:0)

PouchDB通过通道同步/过滤复制

这是使用渠道的具体示例。

var db = new PouchDB("yep");
db.sync(new PouchDB("http://localhost:4984/beer-sample/"), {
    live: true,
    retry: true,
    filter: "sync_gateway/bychannel",
    query_params: {
        channels: "channel-1,channel-2,channel-3,bar"
    }
})

过滤器:“ sync_gateway / bychannel”

传递要应用于源文档的过滤器名称,当前唯一支持的过滤器是“ sync_gateway / bychannel”,这将仅从命名通道集中复制文档。1

query_params.channels

我们将逗号分隔,而不是传递数组。2

同步功能示例

在Sync Gateway中,您的同步功能可能看起来像这样(我打算将同步功能保持为愚蠢状态,因此乍一看您就可以了解我们如何在PouchDB中使用上述通道)

function sync(doc, oldDoc) {
    if (doc.type == "beer") {
        channel("channel-1");
    } else if (doc.type == "soap") {
        channel("channel-2");
    } else if (doc.type == "sweets") {
        channel("channel-3");
    } else if (doc.type == "bar") {
        channel(doc.type);
    }
}

虽然晚了6年...但是总比没有好晚了!