使用管理员将文档添加到 couchbase 服务器时无法从 couchbase lite 检索文档 UI

Cannot retrieve document from couchbase lite when adding documents to couchbase server using admin UI

我正在尝试将文档添加到 couchbase 服务器 (admin UI),然后尝试通过同步网关使用 couchbase Lite 检索它,但无法这样做。我想要实现的是,我现在已经在 couchbase 服务器中拥有大量数据,现在我希望我的移动应用程序使用它,并且因为该数据不是使用同步网关添加的,所以我想实现类似我现在使用 web 添加数据的效果我想要我的 couchbase lite 连接到那个 couchbase 服务器并检索数据。有什么办法吗?或者只能检索使用同步网关添加的数据?

编辑 1 添加源代码

下面是 android 应用代码

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 服务器中创建的文档的文档 ID UI

如你所见,我首先删除了数据库(注释部分)以确保数据库中没有文档,然后运行上面的复制代码。

下面是同步网关配置文件

{
    "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": ["*"]
            }
        }
    }
    }
}

我也想问一下有没有UI或者命令行可以访问CBL。我目前在 android 工作室中使用 CBL,所以我不知道如何访问它的 UI 或命令行

仅供参考,我能够将数据从 CBL 推送到 CouchBase 服务器

我们可以通过阴影解决上述问题。如果我想将我的数据从已创建的存储桶同步到同步网关,则需要存储桶阴影。有关阴影的更多信息 here