java - 在 Couchbase 中查询 View ,Java 客户端

标签 java scala couchbase

我正在使用 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 .

他们的代码

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

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 基本身份验证中用于形成身份验证 header 。 user 变量当然等同于 CouchbaseConnectionFactory 中的 bucket 变量。 .

最佳答案

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

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

关于java - 在 Couchbase 中查询 View ,Java 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769964/

相关文章:

java - 如何删除文本字段值 textfield.setText ("");不起作用

java - 如何为JUNIT开源做贡献

java - 如何使用java在jbpm项目的processdefinition.xml中添加转换?

scala - saveAsNewAPIHadoopFile() 在用作输出格式时出错

java - Couchbase:文档更新期间出现 NOT_STORED 错误

java - Spring MVC 响应体

XML 解析性能 Scala

scala - 与 monad 不同的 monad-transformer 是什么?

couchbase - 如何编写一个嵌套的 couchbase 查询,该查询返回 Spring Data couchbase react 中的对象计数和列表?

couchdb - Membase 有人可以解释一下他们的技术背后的想法吗