2017-09-22 8 views
0

同期ゲートウェイchannels経由でデータを取得する際に問題があります。Couchbase Liteが同期ゲートウェイ経由でチャネルをプルしていません

channelsは基本的には、特別な方法でドキュメントにマークを付けることができるタグのフォームです。

私は

をやろうとしている私は、アプリケーションを閉じると、ローカルDBを削除し、その後、私はなるように設定されたchannels内のすべての文書を期待していたアプリケーションを再開しています引っ張られるが、何も引っ張られない。

セットアップ

私はCouchbaseのLiteと1.4.0と最新のSync_Gatewayを使用しています。

同期ゲートウェイの設定ファイル、私はデフォルトの同期機能を使用しています:私は、ドキュメントを作成するたびに

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(); 

、私は追加しますので、同じよう

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

私はCouchbaseのliteので同期のゲートウェイにアクセスしています["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サーバーへのプッシュはうまく動作しますが、プルすることはできません。

ありがとうございました。

答えて

1

ドキュメントを別のデバイスに同期させるには、ログインしているユーザーがドキュメントのチャネルをユーザーのチャネルリストに追加する必要があります。この場合、"admin_channels": ["config1"]

を追加することにより、だから、同期ゲートウェイの設定は限り同期機能は、デフォルトの1に、デフォルトを指定しなかった場合、私は承知していると...このよう

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

を見てしまいますこれはあなたが提案したものです。 –

+0

私はそれを知らなかった。また、ユーザーに同期するために必要なチャネルを追加する必要があります。例えば"admin_channels":user1の["config1"] – combinatorial

+0

これはうまくいきました。私は重要なことを誤解していたようだが、それについてもっと深く読まなければならないだろう。あなたの答えを編集して私はそれを受け入れるでしょう –

関連する問題