如何使用couchbase lite将android应用程序数据存储到couchbase服务器

时间:2018-02-03 15:02:00

标签: android database couchbase couchbase-sync-gateway

我需要nosql数据库,所以我用couchbase lite来存储数据。我不知道我是否需要sync_gateway,如果需要,那么如何使sync_gateway_config.json文件将数据从移动应用程序存储到couchbase服务器?

这是经理

try {
    manager = new Manager(new AndroidContext(getApplicationContext()),  
          Manager.DEFAULT_OPTIONS);
    Manager.enableLogging("Sync", Log.VERBOSE);

    } catch (IOException e) {
         e.printStackTrace();
    }

try {
    database = manager.getDatabase("app");
} catch (CouchbaseLiteException e) {
    e.printStackTrace();
}

这是文件



    Map properties = new HashMap();
        properties.put("p1x", p1[0]);
        properties.put("p1y", p1[1]);
        properties.put("p2x", p2[0]);
        properties.put("p2y", p2[1]);
        properties.put("p3x", p3[0]);
        properties.put("p3y", p3[1]);
        properties.put("x", finalX);
        properties.put("y", finalY);
        // Create a new document
        Document document = database.createDocument();
        // Save the document to the database
        try {
            document.putProperties(properties);
        } catch (CouchbaseLiteException e) {
            e.printStackTrace();
        }
        // Log the document ID (generated by the database)
        // and properties
        Log.d("app", String.format("Document ID :: %s", document.getId()));
        Log.d("app", String.format("coordinate x : %s %s , coordinate y : 
    %s %s , coordinate z : %s %s , finalx : %s finaly : %s", 
    document.getProperty(String.valueOf("p1x")), 
    document.getProperty(String.valueOf("p1y")), 
    document.getProperty(String.valueOf("p2x")), 
    document.getProperty(String.valueOf("p2y")), 
    document.getProperty(String.valueOf("p3x")), 
    document.getProperty(String.valueOf("p3y")), 
    document.getProperty(String.valueOf("x")), 
    document.getProperty(String.valueOf("y"))));

        URL url = null;
        try {
            url = new URL("http://127.0.0.1:8091/wifi");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        Replication push = database.createPushReplication(url);
        Replication pull = database.createPullReplication(url);
        push.setContinuous(true);
        pull.setContinuous(true);

Sync_gateway_config文件


    {
  "databases": {
    "db": {
      "bucket": "wifi",
      "username": "admin",
      "password": "adminadmin",
      "server": "http://localhost:8091",
      "enable_shared_bucket_access": true,
      "import_docs": "continuous"
    }
  }
}

    enter code here

1 个答案:

答案 0 :(得分:0)

是的,您需要Sync Gateway才能将Couchbase Lite与Couchbase Server连接。

在您的代码中,我看不到您实际启动复制的位置。例如,您需要致电pull.start();

您的Sync Gateway文件看起来合理。 Sync Gateway分发版附带了几个示例配置文件。如果你遇到麻烦,请看看那些。

另一点。您将复制端点指定为127.0.0.1。在Android上,这指的是设备本身。如果您在模拟器中运行,则需要使用该模拟器的专用地址。如果您正在设备上进行测试,则需要执行adb reverse tcp:4984 tcp:4984之类的操作来设置设备与开发机器之间的映射(假设Sync Gateway正在运行)。