Couchbase Lite拉复制

时间:2016-05-14 17:06:47

标签: couchbase couchbase-lite couchbase-sync-gateway

我有Android和网络应用程序。 Android应用使用Couchbase Lite,网络应用使用Couchbase。我使用Couchbase Sync Gateway在这两个数据库之间启用数据复制。

到目前为止,它适用于从移动设备发送数据并在网络应用和第二个移动设备中接收数据。我注意到所有发送文件都有" _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"
        }
    }
}
}

2 个答案:

答案 0 :(得分:0)

只需使用bucket shadowing即可。它是同步网关桶与任何一个couchbase服务器桶的双向同步。

答案 1 :(得分:0)

如果你想保留同步功能给你的所有好东西,那么你需要通过同步网关。同步网关公开了一个可用于构建Web应用程序的REST API。