Couchbase lite未通过同步网关拉通道

Couchbase lite未通过同步网关拉通道,couchbase,couchbase-lite,couchbase-sync-gateway,Couchbase,Couchbase Lite,Couchbase Sync Gateway,我通过同步网关通道拉取数据时遇到问题 我对频道的理解是,它们基本上是一种标签形式,允许您以特殊方式标记文档 我想做什么 当我关闭应用程序,删除本地数据库,然后重新打开应用程序时,我希望频道中设置为拉取的所有文档,但没有拉取任何文档 设置 我正在使用Couchbase Lite 1.4.0和最新的同步网关 同步网关配置文件,我正在使用默认同步功能: { "databases": { "db": { "server": "http://127.0.0.

我通过同步网关
通道拉取数据时遇到问题

我对
频道的理解是,它们基本上是一种标签形式,允许您以特殊方式标记文档

我想做什么

当我关闭应用程序,删除本地数据库,然后重新打开应用程序时,我希望
频道中设置为拉取的所有文档,但没有拉取任何文档

设置

我正在使用Couchbase Lite 1.4.0和最新的同步网关

同步网关配置文件,我正在使用默认同步功能:

{
    "databases": {
        "db": {
            "server": "http://127.0.0.1:8091",
            "username": "db",
            "password": "pass",
            "users":{
                "user1":{
                    "password":"pass"
                }
            }
        }
    }
}
我正在Couchbase lite中访问同步网关,如下所示:

private String[] docChannels = new String[]{
    "channel1",
    "channel2",
};
private String[] configChannels = new String[]{
    "config1",
    "config2",
};

URL url = null;
try {
    url = new URL("http://127.0.0.1:4984/db");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

Replication push = d.createPushReplication(url);
Replication pull = d.createPullReplication(url);
Replication pullConfig = d.createPullReplication(url);

pull.setChannels(Arrays.asList(docChannels));
pullConfig.setChannels(Arrays.asList(configChannels));

pullConfig.setContinuous(false);
pull.setContinuous(true);
push.setContinuous(true);

Authenticator auth = AuthenticatorFactory.createBasicAuthenticator("user1", "pass");
push.setAuthenticator(auth);
pull.setAuthenticator(auth);
pullConfig.setAuthenticator(auth);

push.start();

pullConfig.start();
pull.start();
每当我创建文档时,我都会添加值为
[“config1”]
通道

我的文档的同步信息现在看起来像:

"_sync": {
    "rev": "1-87cdc8c1fd5e0e4ce1a0897cbd47aca1",
    "sequence": 4,
    "recent_sequences": [
      4
    ],
    "history": {
      "revs": [
        "1-87cdc8c1fd5e0e4ce1a0897cbd47aca1"
      ],
      "parents": [
        -1
      ],
      "channels": [
        [
          "config1"
        ]
      ]
    },
    "channels": {
      "config1": null
    },
    "time_saved": "2017-09-22T13:20:43.6061974-05:00"
  }
我不确定我在这里做错了什么。推送到Couchbase服务器可以正常工作,但我的拉操作不行


谢谢。

为了将文档同步到其他设备,登录用户需要将文档的频道添加到用户的频道列表中。在这种情况下,通过添加
“管理频道”:[“配置1”]

所以同步网关配置如下所示

{
    "databases": {
        "db": {
            "server": "http://127.0.0.1:8091",
            "username": "db",
            "password": "pass",
            "users":{
                "user1":{
                    "password":"pass",
                    "admin_channels": ["config1"]
                }
            }
        }
    }
}

据我所知,如果没有指定sync函数,它将默认为默认值,这是您建议的。我没有意识到这一点。您还需要添加同步到用户所需的频道。e、 g.“管理频道”:[“配置1”]对于用户1来说,这很有效。看来我误解了一个重要的方面,我将不得不更深入地阅读它。编辑你的答案,我会接受它是如上所述。根据文档,如果没有提供,它将应用它。这是一种方法,但您也可以使用sync函数中的
access()
函数来动态授予用户访问权限。如果它是永久性的,那么使用admin_通道是最简单的方法。