从java代码添加的文档未与couchbase lite

时间:2015-12-16 12:53:58

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

我从本地couchbase服务器同步到我的android和IOS应用程序,它适用于移动到服务器和服务器到移动设备。然后我尝试将文档从JAVA Web应用程序插入到本地服务器,我成功了。但问题是java web应用程序插入的文档与ios / android移动应用程序不同步。我将java文件插入本地服务器的代码如下:

public class CouchBase {

    public static void main(String args[]) {
        Cluster cluster = CouchbaseCluster.create("127.0.0.1");
        Bucket bucket = cluster.openBucket("test");
        JsonObject user = JsonObject.empty()
                .put("name", "amol")
                .put("city", "mumbai");
        JsonDocument doc = JsonDocument.create("102", user);
        bucket.insert(doc);
        System.out.println(doc.content().getString("name"));
    }
}

在这段代码中,我创建了一个存储桶,然后创建了一个包含所需值的json对象,并将此对象传递给json文档,最后将该文档插入存储桶。

现在我的移动端代码创建文档:

 Document document = database.getDocument(etId.getText().toString());


        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", etName.getText().toString());
        map.put("city", etCity.getText().toString());


        try {
            document.putProperties(map);
        } catch (CouchbaseLiteException e) {
            Log.e(TAG, "Error putting", e);
        }

在这段代码中,我只是创建一个文档并将值放入其中。

我的同步代码如下:

  Replication pullReplication = database.createPullReplication(syncUrl);
        Replication pushReplication = database.createPushReplication(syncUrl);
        pullReplication.setContinuous(true);
        pushReplication.setContinuous(true);
        pullReplication.start();
        pushReplication.start();

我正在做双向同步。     我没有得到java code的错误。请帮我解决这个问题

2 个答案:

答案 0 :(得分:0)

同步网关没有跟踪通过Couchbase-Server java sdk插入的文件,也不建议通过java-sdk直接在sync-gateway bucket中插入数据,你可以使用桶阴影。

如果您想通过网络应用程序插入数据,可以使用同步网关rest api调用http://developer.couchbase.com/documentation/mobile/1.1.0/develop/references/sync-gateway/rest-api/index.html

答案 1 :(得分:0)

在撰写本文时,无法在Sync Gateway使用的存储桶上使用Server SDK。这是因为当新文档修订保存在Sync Gateway数据库中时,它会通过同步功能将文档路由到通道,并授予用户和角色访问通道的权限。其中一些元数据保存在Couchbase Server文档中的_sync属性下。服务器SDK目前不知道基于修订版的系统,因此它将更新文档中的字段而不创建新版本。

从Java Web应用程序读取/写入Sync Gateway数据的推荐方法是使用Sync Gateway REST API