我有安卓和网络应用程序。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"
}
}
}
}
编辑2 (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);
编辑3
所以最后我设法让阴影工作。如果有人有同样的问题。我的基本数据库是 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"
}
}
}
}