【问题标题】:Documents added from java code not syncing with couchbase lite从 java 代码添加的文档不与 couchbase lite 同步
【发布时间】:2015-12-16 12:53:58
【问题描述】:

我确实从本地 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 代码错误。请帮我解决这个问题

【问题讨论】:

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


    【解决方案1】:

    同步网关不跟踪通过Couchbase-Server java sdk插入的文档,也不建议直接通过java-sdk将数据插入sync-gateway bucket,可以使用bucket shadowing。

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

    【讨论】:

    • 但是我看到了我将从服务器得到什么响应的链接,但是我没有找到任何代码如何使用 couchbase sync_gateway 的 REST API。你能给我一些示例代码吗?
    • 点击此链接并通过apistackoverflow.com/questions/34200298/…
    • 那么我们需要从网站或android/ios应用程序从哪一侧调用couchbase sync_gateway的REST API?
    • REST API 可以从双方调用
    【解决方案2】:

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

    从 Java Web 应用读取/写入同步网关数据的推荐方法是使用同步网关REST API

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 1970-01-01
      • 2014-06-08
      • 2018-04-06
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2016-03-28
      相关资源
      最近更新 更多