Couchbase 同步网关“;渠道;在数据库中

Couchbase 同步网关“;渠道;在数据库中,couchbase,pouchdb,couchbase-sync-gateway,Couchbase,Pouchdb,Couchbase Sync Gateway,Pocket DB中是否支持Couchbase Sync Gateway的“通道”? 我希望用户能够看到整个数据的一个子集,如果他们创建了新数据,就能够与谁共享数据 这有可能吗?或者我必须直接与服务器交互,还是在移动设备上使用couchbase lite?PouchDB是以CouchDB为模型的,它没有通道的概念,因此没有计划在PouchDB中实现它 然而,解决问题的一个简单方法是将PockDB同步到CouchDB,然后将其同步到Couchbase同步网关。您需要CouchDB作为中介的原因是,

Pocket DB中是否支持Couchbase Sync Gateway的“通道”? 我希望用户能够看到整个数据的一个子集,如果他们创建了新数据,就能够与谁共享数据


这有可能吗?或者我必须直接与服务器交互,还是在移动设备上使用couchbase lite?

PouchDB是以CouchDB为模型的,它没有通道的概念,因此没有计划在PouchDB中实现它


然而,解决问题的一个简单方法是将PockDB同步到CouchDB,然后将其同步到Couchbase同步网关。您需要CouchDB作为中介的原因是,直接PockDB Couchbase同步网关同步存在一些问题,尽管希望这些问题能够很快得到解决(请参见和)。

只需一点更新:现在这是可能的,PockDB(自V3.4.0版起)现在与同步网关兼容


请参阅此处的教程:

以下是使Pocket db客户端通过用户通道与Couchbase Sync Gateway一起工作的解决方案:

var sync = function () {
    var opts = {
        live: true,
        retry: true,
        //-- from here
        filter: "sync_gateway/bychannel",   
        query_params: {
            "channels": channels
        }
        //-- to here
    };

    database.sync(syncServer, opts);
}
这里的关键是,您只需按原样传递筛选器和查询参数,同步网关就能够理解此筛选器。

下面是一个使用通道的具体示例

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”,这将仅从一组命名的通道复制文档

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"
    }
})
查询参数s.channels 我们用逗号将它们分开,而不是传递数组

同步功能示例 在同步网关中,您的同步功能可能如下所示(我的目的是尽可能保持同步功能的愚蠢性,以便您一眼就能了解我们如何在PockDB中使用上述通道):


6年太晚了。。。但迟做总比不做好

如果用户上的频道发生变化怎么办?@Jedi:它将具有与Couchbase Lite相同的行为,其中本地数据库将开始获取分配给新频道的数据,但问题是,您仍将拥有以前不需要的同步文档。因此,为了保持它干净整洁,我们要做的是清理本地数据库&resync,它将只获取新通道数据。@MaqboolAhmed,@jedi here channels query_params中键“channels”的值是一个字符串或字符串数组?@K Pal:array ofstrings@StCleezy你说得对。但是,字符串数组在转换为查询字符串中以逗号分隔的列表时也应起作用。我个人更喜欢数组,因为它是表示多个字符串的更好方法。