【问题标题】:couchbase lite xamarin pull replication with sync-gatewaycouchbase lite xamarin 使用同步网关拉取复制
【发布时间】:2015-05-22 09:59:29
【问题描述】:

我想提取带有用户名属性的文档 as user1 for user1 就像每个用户只使用他们的名字的属性。

这是我的复制代码。

   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");
            });

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

我不明白 setfilter 函数如何过滤来自服务器的数据。如果有人帮助理解 setfilter 的工作原理并使上述代码正常工作,那就太好了

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    pull replications中的filter函数确实可以返回你感兴趣的特定文档。但是效率不高,filter函数会在远程数据库上的所有文档上运行,以确定要拉取哪些,每次拉取复制开始。

    相反,同步网关引入了sync function 的概念,它以增量方式路由和计算文档的访问控制规则。这样,在启动拉取复制时,Sync Gateway 可以快速而直接地返回用户有权访问的特定文档。

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2016-11-02
      • 2016-02-18
      • 2018-04-06
      • 2018-03-04
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多