2

ローカルのcouchbaseサーバーからAndroidおよびIOSアプリケーションに同期しましたが、モバイルからサーバー、サーバーからモバイルで正常に機能しています。次に、JAVA Web アプリケーションからローカル サーバーにドキュメントを挿入しようとしましたが、成功しました。しかし問題は、Java Web アプリケーションによって挿入されたドキュメントが ios/android モバイル アプリケーションの両方と同期していないことです。ドキュメントをローカル サーバーに挿入するための私の Java コードは次のとおりです。

public class CouchBase {

    public static void main(String args[]) {
        Cluster cluster = CouchbaseCluster.create("127.0.0.1");
        Bucket bucket = cluster.openBucket("test");
        JsonObject user = JsonObject.empty()
                .put("name", "amol")
                .put("city", "mumbai");
        JsonDocument doc = JsonDocument.create("102", user);
        bucket.insert(doc);
        System.out.println(doc.content().getString("name"));
    }
}

このコードでは、1 つのバケットを作成してから、必要な値を保持する 1 つの json オブジェクトを作成し、このオブジェクトを json ドキュメントに渡し、最後にそのドキュメントをバケットに挿入しました。

ドキュメントを作成するためのモバイル側のコード:

 Document document = database.getDocument(etId.getText().toString());


        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", etName.getText().toString());
        map.put("city", etCity.getText().toString());


        try {
            document.putProperties(map);
        } catch (CouchbaseLiteException e) {
            Log.e(TAG, "Error putting", e);
        }

このコードでは、単純に 1 つのドキュメントを作成し、それに値を入れています。

私の同期コードは次のとおりです。

  Replication pullReplication = database.createPullReplication(syncUrl);
        Replication pushReplication = database.createPushReplication(syncUrl);
        pullReplication.setContinuous(true);
        pushReplication.setContinuous(true);
        pullReplication.start();
        pushReplication.start();

双方向同期を行っている場所。Javaコードのどこが間違っているのかわかりません。この問題を解決するのを手伝ってください

4

2 に答える 2

0

この記事の執筆時点では、同期ゲートウェイが使用するバケットでサーバー SDK を使用することはできません。これは、新しいドキュメント リビジョンが同期ゲートウェイ データベースに保存されると、同期関数を経由してドキュメントがチャネルにルーティングされ、ユーザーとロールにチャネルへのアクセスが許可されるためです。そのメタデータの一部は_sync、Couchbase Server のドキュメントのプロパティの下に保持されます。サーバー SDK は現在、リビジョン ベースのシステムを認識していないため、新しいリビジョンを作成せずにドキュメントのフィールドを更新します。

Java Web アプリから同期ゲートウェイ データを読み書きするための推奨される方法は、同期ゲートウェイREST APIを使用することです。

于 2015-12-17T11:45:02.813 に答える