couchbase lite xamarin pull replication with sync-gateway

本文关键字:with sync-gateway replication pull lite xamarin couchbase | 更新日期: 2023-09-27 17:50:32

我想拉文档与用户名属性如user1对应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是如何工作的,并使上面的代码工作,那就太好了

couchbase lite xamarin pull replication with sync-gateway

拉式复制中的筛选函数确实可以返回您感兴趣的特定文档。但是它不是很有效,每次pull复制启动时,过滤器函数将在远程数据库上的所有文档上运行,以确定要提取的文档。

相反,Sync Gateway引入了同步功能的概念,该功能可以对文档进行增量路由和计算访问控制规则。这样,当启动pull复制时,Sync Gateway可以快速而直接地返回用户可以访问的特定文档。

如果需要,您可以在同步网关的拉复制中指定单独的通道。但要记住的是,Sync Gateway和Couchbase Lite之间的过滤式pull复制不是基于过滤功能的。它基于同步功能和基于通道的滤波,如果需要的话。

在P2P场景(两个Couchbase Lite实例之间的复制)中,使用过滤器函数模型