2017-09-22 9 views
0

동기화 게이트웨이 channels을 통해 데이터를 가져 오는 데 문제가 있습니다.Couchbase Lite가 동기화 게이트웨이를 통해 채널을 가져 오지 않습니다.

내가 이해하는 방식으로 channels은 기본적으로 문서를 특별한 방법으로 표시 할 수있는 태그 형식입니다.

내가

을하려고 내가 응용 프로그램을 종료 할 때, 로컬 DB를 삭제 한 다음, 내가로 설정 한 channels에있는 모든 문서를 기대하고 응용 프로그램을 다시하고 잡아 당기지 만 그 대신에 아무것도 끌어 당기지 않습니다.

설정하는 것은

것은 내가 카우치베이스 주식회사 라이트 1.4.0 최신 Sync_Gateway을 사용하고 있습니다.

동기화 게이트웨이 설정 파일, 나는 기본 동기화 기능을 사용하고 있습니다 :

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

내가 지금처럼 카우치베이스 주식회사 라이트에 동기화 게이트웨이에 접근하고있다 : 나는 문서를 만들 때마다

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 서버로 밀어 넣는 것은 잘 작동하지만, 당기는 것은 아닙니다.

감사합니다.

답변

1

문서를 다른 장치에 동기화하려면 로그인 한 사용자가 문서의 채널을 사용자의 채널 목록에 추가해야합니다. "admin_channels": ["config1"]

를 추가하여이 경우에 따라서 동기화 게이트웨이 설정은 지금까지 동기화 기능이 지정되지 않은 경우 나 기본 하나 기본값, 알고 있어요으로 ... 이런 식으로

{ 
    "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

글쎄, 그게 효과가있어. 중요한 측면을 오해하고있는 것처럼 보입니다. 깊이있는 내용을 더 자세히 읽어야합니다. 답변을 수정하면 받아 들일 것입니다 –