Couchbase Lite 拉取复制

Couchbase Lite pull replication

我有 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"
        }
    }
}
}

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

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