Синхронизация 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 лет... Но лучше поздно, чем никогда!
person
Miko Chu
schedule
24.07.2020