Pouch DB中是否支持Couchbase Sync Gateway的“频道”? 我希望能够使用看到整体数据的一个子集,如果他们创建新数据,以便能够与他们共享的人分享。
PouchDB有可能吗?或者我是否必须直接与服务器交互或使用couchbase lite用于移动设备?
答案 0 :(得分:3)
PouchDB是在CouchDB之后建模的,CouchDB没有通道的概念,因此没有计划在PouchDB中实现它。
但是,解决问题的一种简单方法是将PouchDB同步到CouchDB,然后将其同步到Couchbase Sync Gateway。您需要CouchDB作为中介的原因是直接PouchDB< - >存在一些问题。 Couchbase同步网关同步,但希望它们很快得到解决(参见例如this和this)。
答案 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)
这是使用渠道的具体示例。
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”,这将仅从命名通道集中复制文档。1
我们将逗号分隔,而不是传递数组。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年...但是总比没有好晚了!