我需要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
答案 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正在运行)。