Couchbase:根据条件同步数据

Couchbase: Sync data with conditions

我正在构建聊天应用程序,移动应用程序用户可以在其中将数据保存在他的设备上。我们尝试仅将与用户相关的数据从服务器同步到客户端(couchbase 服务器到 couchbase 移动设备)。但是从使用 swift 的移动设备,所有 Bucket 都从服务器存储到移动内部数据库。我的同步 json 是

{
  "interface": "192.168.0.68:4984",
  "adminInterface": "192.168.0.68:4985",
  "pretty": true,
  "log": ["*"],
  "databases": {
    "db": {
        "server": "http://192.168.0.68:8091",
        "bucket": "travel-sample",

        "username":"himanshu",
        "password":"123456",
        "users": {
            "himanshu": {
              "password": "123456",
              "admin_channels": [
                "*"
              ]
            }
          },
        "sync":`
            function (doc) {
                console.log("doc=================================================================>")
                channel (doc.channels);
            }
        `   
    }
}}

有可能服务器只发送相关数据到手机同步

是的,您应该使用 Sync Gateway channels 将正确的数据路由到设备。作为同步功能的一部分,例如,如果您将数据路由到 "mobile channel" 并在复制器上设置此通道,或为只能访问此通道的移动用户设置身份验证,那么您将只能获得具体数据。

这可以通过为每个用户正确配置频道来定义访问权限并限制用户来实现。

允许同步功能根据文件内容授权用户访问频道

在这种情况下,当您创建文档时,它的属性应指示特定用户拥有 created/edited,并基于此启动同步功能以继续进行复制。

根据给定用户感兴趣的文档类型创建一个标签数组,以便在移动设备上复制并将其传递到您的同步功能中

{ 
  "tags" : [
    "fashion",
    "outing",
    "shopping"
   ]
}

同步功能与

类似
function(doc) {
  channel(doc.tags);
}

在客户端通过使用内置复制API同步相关用户内容,设置用户的主题兴趣以拉取相关数据。然后,复制器将与来自通道的数据进行交互。按照 Objective-C 代码

创建拉取复制
CBLReplication *pull = [database createPullReplication: url];
pull.channels = @[@"outing",@"shopping"];
[pull start];

如果我们没有设置特定通道,那么可能所有存在的数据都会从 Sync Gateway 中提取。