couchbase lite xamarin使用sync-gateway拉取复制

时间:2015-05-22 09:59:30

标签: c# xamarin replication couchbase-lite couchbase-sync-gateway

我想用username属性提取文档 作为user1的user1,就像每个user only only属性的名称一样。

这是我的复制码。

   private void setupreplication(){
         Console.WriteLine ("Setting up replication");
         Uri Server = new Uri("http://192.168.1.213:4984/aussie-coins-syncgw/");
         var pull = _db.CreatePullReplication (Server);
         var push = _db.CreatePushReplication (Server);
         pull.Filter = "byUser";
         pull.FilterParams = new Dictionary<string, object> { {"type", "user1"} };
        pull.Continuous = true;
        push.Continuous = true;
        pull.Start();
        push.Start();
    }

这是我的设置过滤器代码

_couchBaseLiteLocal.SetFilter("byUser", (revision, filterParams) =>
            {
                var typeParam = filterParams["type"].ToString();

                return (typeParam != null) && typeParam.Equals("user1");
            });

使用上面的代码,通用拉自身不起作用。 我只是尝试按照文档中的说明进行操作。

我不明白setfilter函数如何从服务器过滤数据。如果有人帮助理解setfilter如何工作并使上述代码工作

,那就太好了

提前致谢。

1 个答案:

答案 0 :(得分:0)

拉式复制中的过滤器功能确实可以返回您感兴趣的特定文档。但它效率不高,过滤器函数将在远程数据库上的所有文档上运行,以确定要拉出哪些文档,每次启动拉动复制时。

相反,Sync Gateway引入了sync function的概念,该概念以递增方式路由和计算文档的访问控制规则。这样,当启动pull复制时,Sync Gateway可以快速,直接地返回用户有权访问的特定文档。

如果需要,您可以在同步网关的拉取复制中specify individual channels。但要记住的是,Sync Gateway和Couchbase Lite之间的过滤拉取复制不是基于过滤器功能。如果需要,它基于同步功能和基于通道的过滤。

在P2P场景中(两个Couchbase Lite实例之间的复制),使用了filter function model