在Couchbase中查询视图,Java客户端
我正在使用java客户机的1.4.3版本,并试图连接到本地运行的Couchbase服务器,但出现了身份验证错误。在浏览了他们的客户端库如何在类中使用变量的代码(开源不是很好吗?)之后,我得出结论,如果我想连接到一个“bucket”,我必须为每个“bucket”创建一个用户名与该bucket相同的用户。这对我来说毫无意义。我一定是错了。我不是吗?必须有另一种方法。那边是什么 作为参考,下面是我用来创建连接的内容(它是Scala,但在Java中看起来几乎相同): 这直接源于他们的观点 他们的代码 如果我查看他们连接到“视图”本身的代码,我会看到以下内容:在Couchbase中查询视图,Java客户端,java,scala,couchbase,Java,Scala,Couchbase,我正在使用java客户机的1.4.3版本,并试图连接到本地运行的Couchbase服务器,但出现了身份验证错误。在浏览了他们的客户端库如何在类中使用变量的代码(开源不是很好吗?)之后,我得出结论,如果我想连接到一个“bucket”,我必须为每个“bucket”创建一个用户名与该bucket相同的用户。这对我来说毫无意义。我一定是错了。我不是吗?必须有另一种方法。那边是什么 作为参考,下面是我用来创建连接的内容(它是Scala,但在Java中看起来几乎相同): 这直接源于他们的观点 他们的代码 如
public ViewConnection createViewConnection(
List<InetSocketAddress> addrs) throws IOException {
return new ViewConnection(this, addrs, bucket, pass);
}
公共视图连接createViewConnection(
列表地址)引发IOException{
返回新的视图连接(this、addrs、bucket、pass);
}
然后将其传递给:
公共视图连接(最终CouchbaseConnectionFactory cf,
最终列表seedAddrs,最终字符串用户,
最终字符串密码)//更多代码。。。
而该
user
变量实际上在HTTP基本身份验证中用于形成身份验证头。当然,user
变量相当于中的bucket
变量。您是正确的-每个bucket都应该以bucket名称作为用户进行身份验证。但是,没有任何用户可以“创建”-您只是使用在集群UI上创建bucket时设置的任何(bucket)名称和密码
请注意,人们通常在每个应用程序中使用一个bucket(不要认为bucket==表,而是认为bucket==数据库),因此对于大多数应用程序,通常不需要超过两个bucket
public ViewConnection createViewConnection(
List<InetSocketAddress> addrs) throws IOException {
return new ViewConnection(this, addrs, bucket, pass);
}
public ViewConnection(final CouchbaseConnectionFactory cf,
final List<InetSocketAddress> seedAddrs, final String user,
final String password) //more code...