私は私の地元のCouchbaseのデータベースと私のAndroidアプリのために働くためにレプリケーション機能を取得して問題が午前:私はプルレプリケーションを作成したらAndroidのCouchbaseのLiteのレプリケーション
private void startSync() {
URL syncUrl;
try {
syncUrl = new URL("http://10.0.2.2:4984/sync_gateway"); // I am testing with the Android emulator
manager = new Manager(new AndroidContext(this), Manager.DEFAULT_OPTIONS);
database = manager.getDatabase("db");
Replication pullReplication = database
.createPullReplication(syncUrl);
pullReplication.setContinuous(true);
pullReplication.addChangeListener(this);
pullReplication.start();
}
catch (MalformedURLException e) {
throw new RuntimeException(e);
}
catch (IOException e) {
e.printStackTrace();
}
catch (CouchbaseLiteException e) {
e.printStackTrace();
}
Query query = database.createAllDocumentsQuery();
query.setAllDocsMode(Query.AllDocsMode.ALL_DOCS);
QueryEnumerator result;
try {
result = query.run();
for (Iterator<QueryRow> it = result; it.hasNext();) {
QueryRow row = it.next();
Log.i("CouchActivity", "Getting document i: " + row.getDocumentId());
}
}
catch (CouchbaseLiteException e) {
e.printStackTrace();
}
}
を、私はのためにすべての文書を照会するために進みますローカルデータベースが返されますが、ドキュメントは返されません。
次のように同期のゲートウェイのための私の設定ファイルは次のとおりです。私はローカルホストを入力すると
{
"interface": ":4984",
"adminInterface": ":4985",
"log": ["REST"],
"databases": {
"sync_gateway": {
"server": "http://localhost:8091",
"bucket": "stations",
"sync": `function(doc) {channel(doc.channels);}`,
"users": { "GUEST": { "disabled": false, "admin_channels": ["*"] } }
}
}
}
は:4984/sync_gateway、私がもし
{"committed_update_seq":1,"compact_running":false,"db_name":"sync_gateway","disk_format_version":0,"instance_start_time":1471324911376777,"purge_seq":0,"state":"Online","update_seq":1}"
わからない」の回答を得ますかAndroidのコードを実行すると、のAndroid側に同期ゲートウェイの出力 "POST/sync_gateway/_changes"が表示されるので、誰でも複製が機能しない理由を誰でも説明できますか?
更新 - セットアップが正しく行われたことを確認できました。私が持っていた問題は、私が自分の書類を作成した方法と関係がありました。管理コンソールから作成したものには、有効な文書として認識されるために必要なメタデータがありませんでした。私はプッシュレプリケーションを介して私のアプリケーションを介してデータベースにデータを投入してサーバー側のデータベースにデータを書き込むことになりました。 POSTリクエストを介してドキュメントを作成することもできます。
Couchbase Liteのすべてのドキュメントクエリの結果には、どのような結果が見込まれますか?同期ゲートウェイからの応答は、複製する変更がないことを示します(update_seq = 1)。 REST APIを使用してSync Gatewayに新しいドキュメントを追加することができます(curlリクエストの例http://developer.couchbase.com/mobile/swagger/sync-gateway-public/#!/document/post_dbを参照してください)。 Couchbase Liteのすべてのdocsクエリから返されるかどうかを確認します。 – jamiltz
ドキュメントはすべて管理コンソールから追加されました。最初のプルでデータベース内の3つの文書を同期させるべきではありません。私はその要求を試してみます。 – user1927638