6

Pouch DB 中是否支持 Couchbase Sync Gateway 的“通道”?我希望能够让用户看到整体数据的一个子集,以及他们是否创建了新数据以便能够与他们共享的对象共享。

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

4

4 回答 4

4

只是一点点更新:这现在是可能的,PouchDB(从 V3.4.0 版本开始)现在与同步网关兼容。

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

于 2015-04-27T11:14:53.057 回答
4

这是使 pouch 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);
}

这里的关键是您只需按原样传递过滤器和查询参数,同步网关无论如何都有能力理解这个过滤器。

于 2016-08-18T10:36:56.173 回答
3

PouchDB is modeled after CouchDB, which doesn't have the concept of channels, so there are no plans to implement it in PouchDB.

However, one easy way to solve your problem is to sync PouchDB to a CouchDB, then sync that to Couchbase Sync Gateway. The reason you will need CouchDB as an intermediary is that there are a few issues with direct PouchDB <-> Couchbase Sync Gateway syncing, although hopefully they should be resolved soon (see e.g. this and this).

于 2014-04-17T21:59:53.797 回答
2

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 年……但迟到总比没有好!

于 2020-07-24T04:23:17.610 回答