【问题标题】:Querying Views in Couchbase, Java Client在 Couchbase、Java 客户端中查询视图
【发布时间】:2014-07-15 23:44:49
【问题描述】:

我正在使用 1.4.3 版本的 java 客户端并尝试连接到我在本地运行的 Couchbase 服务器,但我遇到了身份验证错误。在查看了他们的客户端库如何在他们的类中使用变量的代码(不是开源的吗?)之后,我得出的结论是,如果我想能够连接到我拥有的“桶”为每个“桶”创建一个与该桶具有相同用户名的用户。这对我来说毫无意义。我一定是错的。我不是吗?必须有另一种方式。那是什么?

作为参考,这是我用来创建连接的内容(它是 Scala,但在 Java 中看起来几乎相同):

val cf = new CouchbaseConnectionFactoryBuilder()
    .setViewTimeout(opTimeout)
    .setViewWorkerSize(workerSize)
    .setViewConnsPerNode(conPerNode)
    .buildCouchbaseConnection(nodes, bucket, password)
new CouchbaseClient(cf)

直接来自他们的examples

他们的代码

如果我查看他们连接到“视图”本身的代码,我会看到以下内容:

public ViewConnection createViewConnection(
    List<InetSocketAddress> addrs) throws IOException {
  return new ViewConnection(this, addrs, bucket, pass);
}

然后将其传递给constructor:

public ViewConnection(final CouchbaseConnectionFactory cf,
                      final List<InetSocketAddress> seedAddrs, final String user,
                      final String password) //more code...

并且 user 变量实际上用于 HTTP Basic Auth 以形成 Authentication 标头。 user 变量当然等同于 CouchbaseConnectionFactory 中的 bucket 变量。

【问题讨论】:

    标签: java scala couchbase


    【解决方案1】:

    您是正确的 - 每个存储桶都应使用存储桶名称作为用户进行身份验证。但是,没有任何用户可以“创建” - 您只是使用在集群 UI 上创建存储桶时设置的任何(存储桶)名称和密码。

    请注意,人们通常每个应用程序使用一个存储桶(不要认为存储桶 == 表,认为存储桶 == 数据库),因此对于大多数应用程序而言,您通常不需要多个存储桶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2016-05-20
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多