我有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使用的內部元數據。 –