Couchbase lite 不通过同步网关拉频道
Couchbase lite not pulling channels via Sync Gateway
我在通过 Sync Gateway 提取数据时遇到问题 channels
。
我的理解是 channels
它们基本上是一种标签形式,允许您以特殊方式标记文档。
What I am trying to do
当我关闭应用程序,删除本地数据库,然后重新打开应用程序时,我希望 channels
中设置为被拉取的所有文档,但实际上什么都没有被拉取。
Setup
我正在使用 Couchbase Lite 1.4.0 和最新的 Sync_Gateway。
同步网关配置文件,我使用的是默认同步功能:
{
"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"]
的 channels
键。
我文档的同步信息现在看起来像:
"_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 服务器工作正常,但我的拉动没有。
谢谢。
为了将文档同步到另一台设备,登录用户需要将文档的频道添加到用户的频道列表中。在这种情况下,通过添加 "admin_channels": ["config1"]
所以同步网关配置应该是这样的...
{
"databases": {
"db": {
"server": "http://127.0.0.1:8091",
"username": "db",
"password": "pass",
"users":{
"user1":{
"password":"pass",
"admin_channels": ["config1"]
}
}
}
}
}
我在通过 Sync Gateway 提取数据时遇到问题 channels
。
我的理解是 channels
它们基本上是一种标签形式,允许您以特殊方式标记文档。
What I am trying to do
当我关闭应用程序,删除本地数据库,然后重新打开应用程序时,我希望 channels
中设置为被拉取的所有文档,但实际上什么都没有被拉取。
Setup
我正在使用 Couchbase Lite 1.4.0 和最新的 Sync_Gateway。
同步网关配置文件,我使用的是默认同步功能:
{
"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"]
的 channels
键。
我文档的同步信息现在看起来像:
"_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 服务器工作正常,但我的拉动没有。
谢谢。
为了将文档同步到另一台设备,登录用户需要将文档的频道添加到用户的频道列表中。在这种情况下,通过添加 "admin_channels": ["config1"]
所以同步网关配置应该是这样的...
{
"databases": {
"db": {
"server": "http://127.0.0.1:8091",
"username": "db",
"password": "pass",
"users":{
"user1":{
"password":"pass",
"admin_channels": ["config1"]
}
}
}
}
}