查询Couchbase,Java Client中的视图

时间:2014-07-15 23:44:49

标签: java scala couchbase

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

作为参考,这里是我用来创建连接的东西(它是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变量。

1 个答案:

答案 0 :(得分:1)

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

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