0

私はアンドロイドとウェブアプリを持っています。Android アプリは Couchbase Lite を使用し、Web アプリは Couchbase を使用します。私は Couchbase Sync Gateway を使用して、これら 2 つのデータベース間のデータ複製を有効にしています。

これまでのところ、モバイルからデータを送信し、Web アプリと 2 番目のモバイル デバイスの両方でデータを受信するのに問題なく動作します。すべての送信ドキュメントに「_sync」パラメータが追加されていることに気付きました。

私の質問は、Web アプリを介して (couchbase データベースに) 追加されたドキュメントをレプリケーションに参加させるにはどうすればよいですか? (デフォルトではフィールド「_sync」はありません)

編集

Legendary_Hunter が示唆したように、Shadow を使用してみましたが、まだ機能しません。私の設定ファイル:

{
"log":["CRUD+", "REST+", "Changes+", "Attach+"],
"databases": {
    "kris_mobile_db": {
        "server":"http://192.168.0.11:8091",
        "sync":`
            function (doc) {
            channel (doc.channels);
        }`,
        "bucket":"kris_mobile_db",
        "users": {
            "GUEST": {
                "disabled": false,
                "admin_channels": ["*"]
            }
        },
        "shadow": {
            "server": "http://localhost:8091",
            "bucket": "kris_mobile_db_sync"
        }
    }
}
}

edit2 (29.05.16)

public class DatabaseManager {

private static DatabaseManager manager;
private static CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder().autoreleaseAfter(6000).build();
private static String bucketName = "kris_mobile_db";
private Cluster cluster;
private Bucket bucket;

    public static DatabaseManager getInstance(){

        if(manager == null)
            manager = new DatabaseManager();

        return manager;
    }

    public Bucket getBucketInstance(){
        if(bucket == null)
            bucket = cluster.openBucket(bucketName);

        return bucket;
    }


    public boolean establishConnection(String host, String port, String bucketName){

        // host: 192.168.0.11, port: 8091
        cluster = CouchbaseCluster.create(env, host+":"+port);

        DatabaseManager.bucketName = bucketName;
        bucket = cluster.openBucket(bucketName);

        return true;
    }
}

挿入は次のようになります

JsonDocument doc = JsonDocument.create(docId, content);
DatabaseManager.getInstance().getBucketInstance().insert(doc);

edit3

それで、ようやくシャドーイングが機能するようになりました。誰かが同じ問題を抱えていたら。私の基本データベースは kris_mobile_db で、syncGateway シャドーイング データベースは kris_mobile_db_sync です。構成ファイル:

{
"log":["CRUD+", "REST+", "Changes+", "Attach+"],
"databases": {
    "kris_mobile_db": {
        "server":"http://192.168.0.11:8091",
        "sync":`
            function (doc) {
            channel (doc.channels);
        }`,
        "bucket":"kris_mobile_db_sync",
        "users": {
            "GUEST": {
                "disabled": false,
                "admin_channels": ["*"]
            }
        },
        "shadow":{
            "server":"http://192.168.0.11:8091",
            "bucket":"kris_mobile_db"
        }
    }
}
}
4

2 に答える 2

0

バケット シャドーイングを使用するだけです。これは、同期ゲートウェイ バケットと、couchbase サーバーの任意のバケットとの双方向の同期です。

于 2016-05-14T18:09:42.567 に答える
0

同期機能が提供するすべての利点を維持したい場合は、同期ゲートウェイを経由する必要があります。同期ゲートウェイは、Web アプリの構築に使用できる REST API を公開します。

于 2016-05-16T21:57:29.340 に答える