如何在以前使用"Cluster.ConnectAsync"指定时获取bucket



我用以下代码在DI中启动了集群:

serviceCollection.AddSingleton<ICouchbaseRepository>(service =>
{
var couchbaseOptions = service.GetService<AppSettings>()?.CouchbaseOptions
?? throw new NullReferenceException(nameof(CouchbaseOptions));
var cluster = Cluster.ConnectAsync(new ClusterOptions
{
ConnectionString = couchbaseOptions.ConnectionString,
Buckets = new List<string> { couchbaseOptions.Bucket }, // See here
UserName = couchbaseOptions.Username,
Password = couchbaseOptions.Password
});
return new CouchbaseRepository(cluster);
});

由于我在初始化过程中指定了bucket名称,我以后如何在不提供bucket名称的情况下访问它?

我不能使用类似Cluster.BacketAsync((的东西,因为它需要在这里指定bucket名称(当我之前指定了所需的bucket名称时,必须再次指定名称有什么意义?(。

我尝试了Cluster.Buckets.GetAllBucketsAsync(),但我得到了ArgumentNullException;使用CCD_ 3或CCD_。

Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'value')
at Newtonsoft.Json.Utilities.ValidationUtils.ArgumentNotNull(Object value, String parameterName)
at Newtonsoft.Json.Linq.Extensions.Value[T,U](IEnumerable`1 value)
at Newtonsoft.Json.Linq.Extensions.Value[U](IEnumerable`1 value)
at Couchbase.Management.Buckets.BucketManager.GetBucketSettings(JToken json)
at Couchbase.Management.Buckets.BucketManager.GetAllBucketsAsync(GetAllBucketsOptions options)

环境:

  • .NET Core 5
  • CouchbaseNetClient 3.1.3
  • Couchbase服务器社区6.6.0
  • 在Docker上运行

注意:这是Couchbase论坛的交叉帖子:https://forums.couchbase.com/t/how-to-get-the-bucket-when-previously-specified-with-cluster-connectasync/29877

原来这是GetAllBucketsAsync()中的一个已知错误。

在Couchbase的Forum上调用GetAllBucketsAsync((时出现System.ArgumentNullException
  • [NCBC-2551]GetAllBucketsAsync总是在Couchbase问题跟踪上引发ArgumentNullException(验证(
  • 最新更新