我有Android和网络应用程序。 Android应用使用Couchbase Lite,Web应用使用Couchbase。我正在使用Couchbase Sync Gateway来启用这两个数据库之间的数据复制。Couchbase Lite拉复制
到目前为止,它在从移动设备发送数据并在网络应用程序和第二个移动设备上接收数据方面工作正常。我注意到所有发送的文件都添加了“_sync”参数。
我的问题是如何启用通过web应用程序(以couchbase数据库)添加的文件参与复制? (他们没有场“_sync”默认情况下)
编辑
由于Legendary_Hunter建议我尝试使用阴影,但仍无法得到它的工作。我的配置文件:
{
"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(16年5月29日)
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 shadowing数据库是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"
}
}
}
}
只要忽略'_sync'属性即可。这是Sync Gateway使用的内部元数据。 –