2016-05-19 7 views
2

Ich habe einen TCP-Server, der versucht, eine Verbindung zu einer Couchbase-Datenbank mithilfe der Go-Couchbase-Client-Bibliothek herzustellen, aber ich bekomme eine Fehlermeldung, dass der Bucket, auf den ich zugreifen möchte, " Ereignisse ", existiert nicht.Couchbase GoLang-Client kann Eimer nicht finden

Wenn ich die offizielle Couchbase-Client-Bibliothek für Go verwende, funktioniert alles gut.

Der Unterschied, den ich zwischen diesen beiden Clients bemerkte, ist das Konzept von "Pool". Ich habe diesen Pool als "Standard" festgelegt.

Was könnte dazu führen, dass dieser Go-Client meinen Bucket nicht sieht?

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) 
} 

Antwort

1

Ich nehme an, Sie erhalten eine Art von Authentifizierung Fehler. Die API ist ein wenig verwirrend.

GetBucketWithAuth („Ereignisse“, „Ereignisse“, „Passwort“) Namen und den Eimer Passwort

Der Grund dafür ist, dass der Kunde will den Eimer Benutzer: GetBucketWithAuth sollte wie folgt aufgerufen werden. Der Bucket-Benutzername ist mit dem Bucket-Namen identisch.

Mit diesem sagte ich würde sehr empfehlen, dass Sie gocb und nicht go-couchbase verwenden. gocb ist der offizielle Couchbase go client und go-couchbase wird nur intern in Couchbase verwendet. Tatsächlich verwenden viele der Komponenten, die go-couchbase verwenden, stattdessen gocb, da diese Bibliothek viel benutzerfreundlicher und besser organisiert ist.

https://github.com/couchbase/gocb

Verwandte Themen