Я пытаюсь добавить документы на сервер couchbase (пользовательский интерфейс администратора), а затем попытаться извлечь его с помощью couchbase Lite через шлюз синхронизации, но не смог этого сделать. То, что я пытаюсь достичь, у меня уже есть много данных на сервере couchbase, теперь я хочу, чтобы мое мобильное приложение использовало его, и потому что эти данные не были добавлены с помощью шлюза синхронизации. Я хочу добиться чего-то вроде добавления данных с помощью web now. my couchbase lite, чтобы подключиться к этому серверу couchbase и получить данные. Есть ли способ сделать это? или только данные, которые были добавлены с помощью шлюза синхронизации, могут быть восстановлены?Не удается получить документ из couchbase lite при добавлении документов на сервер couchbase с помощью admin UI
EDIT 1 Добавлено исходные коды
Ниже андроида код приложения
package com.couchbase.examples.couchbaseevents;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.couchbase.lite.CouchbaseLiteException;
import com.couchbase.lite.Database;
import com.couchbase.lite.Document;
import com.couchbase.lite.Manager;
import com.couchbase.lite.android.AndroidContext;
import com.couchbase.lite.replicator.Replication;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
public static final String DB_NAME = "couchbaseevents";
final String TAG = "CouchbaseEvents";
Database database = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "Begin Couchbase Events App");
Manager manager = null;
try {
manager = new Manager(new AndroidContext(this), Manager.DEFAULT_OPTIONS);
database = manager.getDatabase(DB_NAME);
} catch (Exception e) {
Log.d(TAG, "Error getting database", e);
return;
}
/*try {
database.delete();
} catch (Exception e) {
Log.e(TAG, "Cannot delete database", e);
return;
}*/
try {
startReplications();
} catch (CouchbaseLiteException e) {
e.printStackTrace();
}
Document retrievedDocument = database.getDocument("123");
// display the retrieved document
Log.d(TAG, "retrievedDocument=" + String.valueOf(retrievedDocument.getProperties()));
Log.d(TAG, "End Couchbase Events App");
}
private URL createSyncURL(boolean isEncrypted){
URL syncURL = null;
String host = "http://172.16.25.100";
String port = "4986";
String dbName = "sync_gateway";
try {
//syncURL = new URL("http://127.0.0.1 :4986/sync_gateway");
syncURL = new URL(host + ":" + port + "/" + dbName);
} catch (Exception me) {
me.printStackTrace();
}
Log.d(syncURL.toString(),"URL");
return syncURL;
}
private void startReplications() throws CouchbaseLiteException {
Replication pull = database.createPullReplication(this.createSyncURL(false));
Replication push = database.createPushReplication(this.createSyncURL(false));
pull.setContinuous(true);
push.setContinuous(true);
pull.start();
push.start();
if(!push.isRunning()){
Log.d(TAG, "MyBad");
}
/*if(!push.isRunning()) {
Log.d(TAG, "Replication is not running due to " +push.getLastError().getMessage());
Log.d(TAG, "Replication is not running due to " +push.getLastError().getCause());
Log.d(TAG, "Replication is not running due to " +push.getLastError().getStackTrace());
Log.d(TAG, "Replication is not running due to " +push.getLastError().toString());
}*/
}
}
"123" является идентификатор документа документа Я создал сервер CouchBase с помощью интерфейса администратора
Как вы можете увидеть, что я сначала удалил базу данных (прокомментированная часть), чтобы убедиться, что в базе данных нет документа, а затем был запущен вышеупомянутый код репликации.
Ниже синхронизации шлюз конфигурационный файл
{
"log":["CRUD+", "REST+", "Changes+", "Attach+"],
"interface":":4986",
"adminInterface":":14985",
"databases": {
"sync_gateway": {
"server":"http://172.16.25.100:8091",
"bucket":"sync_gateway",
"sync":`
function (doc) {
channel (doc.channels);
}`,
"users": {
"GUEST": {
"disabled": false,
"admin_channels": ["*"]
}
}
}
}
}
Я также хочу спросить, есть ли строка интерфейса или команды для доступа к CBL. Я в настоящее время использую CBL в Android Studio, так что я не знаю, как получить доступ к его пользовательский интерфейс или командную строку
Просто для информации, я могу передавать данные с CBL на CouchBase сервер
Нам нужна ваша конфигурация шлюза синхронизации и код в CB lite, с помощью которого вы определяете, настраиваете и запускаете синхронизацию pull и push, чтобы дать какие-либо советы. – TAM
Отредактировано мое сообщение. Пожалуйста, еще раз проверьте –
Не выглядит плохо с первого взгляда. Однако у меня нет опыта выполнения синхронизации для гостевого пользователя с каналами = *. Появляется довольно небезопасно, например. любой из нас, читающих это, теперь получит доступ к вашей базе данных. Я всегда отключу гостя и работаю с обычным, зарегистрированным пользователем. Но это не может быть источником вашей проблемы. Что произойдет, если вы выполните этот код с помощью отладчика? Синхронизация не работает только в одном направлении или в обоих? – TAM