2

go-couchbase クライアント ライブラリを使用して Couchbase データベースに接続しようとする TCP サーバーがありますが、アクセスしようとしている "events" という名前のバケットが存在しないというエラーが表示されます。

Go 用の公式の Couchbase クライアント ライブラリを使用すると、すべて正常に動作します。

この 2 つのクライアントの違いに気付いたのは、"プール" の概念です。このプールを「デフォルト」に設定しました。

この Go クライアントが私のバケットを認識しない原因は何ですか?

cb, err := couchbase.Connect("http://address:port")
if err != nil {
        log.Fatalf("Error connecting:  %v", err)
}

cbPool, err := cb.GetPool("default")
if err != nil {
    log.Fatalf("Error getting pool: %v", err)
}

cbBucket, err := cbPool.GetBucketWithAuth("events", "username", "password")
if err != nil {
    log.Fatalf("Error getting bucket: %v", err)
}
4

1 に答える 1

1

何らかの認証エラーが発生していると思います。API は少しわかりにくいです。GetBucketWithAuth は次のように呼び出す必要があります。

GetBucketWithAuth("イベント", "イベント", "パスワード")

その理由は、クライアントがバケットのユーザー名とバケットのパスワードを必要としているからです。バケットのユーザー名はバケット名と同じです。

そうは言っても、go-couchbase ではなく gocb を使用することを強くお勧めします。gocb は公式の Couchbase go クライアントであり、go-couchbase は Couchbase 内部でのみ使用されます。実際、go-couchbase を使用するコンポーネントの多くは、代わりに gocb を使用するようになります。これは、このライブラリの方がはるかに使いやすく、整理されているためです。

https://github.com/couchbase/gocb

于 2016-05-20T03:58:43.327 に答える