Skip to content

Instantly share code, notes, and snippets.

@owulveryck
Last active April 10, 2018 13:25
Show Gist options
  • Save owulveryck/8d70df1fac1794046e58c92728fa7f81 to your computer and use it in GitHub Desktop.
Save owulveryck/8d70df1fac1794046e58c92728fa7f81 to your computer and use it in GitHub Desktop.
Creating a design document, a view and a query on couchbase 5.0
package main
import (
"fmt"
"log"
"gopkg.in/couchbase/gocb.v1"
)
func main() {
cluster, err := gocb.Connect("couchbase://localhost")
if err != nil {
log.Fatal("Connect error", err)
}
authenticator := gocb.PasswordAuthenticator{
Username: "gocb",
Password: "couchbase",
}
err = cluster.Authenticate(authenticator)
if err != nil {
log.Fatal("Cannot authenticate", err)
}
bucket, err := cluster.OpenBucket("beer-sample", "couchbase")
if err != nil {
log.Fatal("Cannot open bucket: ", err)
}
// Create the design document and the view
// https://developer.couchbase.com/documentation/server/3.x/developer/dev-guide-3.0/views-from-apps.html
designDoc := &gocb.DesignDocument{
Name: "dev_beer",
Views: map[string]gocb.View{
"by_name": gocb.View{
Map: "function (doc, meta) {\n" +
" if(doc.type && doc.type == \"beer\") {\n" +
" emit(doc.name);\n" +
" }\n" +
"}"},
},
}
err = bucket.Manager("gocb", "couchbase").UpsertDesignDocument(designDoc)
if err != nil {
log.Fatal("Cannot create design document: ", err)
}
// Create the view query
viewQuery := gocb.NewViewQuery("dev_beer", "by_name")
results, err := bucket.ExecuteViewQuery(viewQuery)
if err != nil {
log.Fatal("Cannot execute query", err)
}
type record interface{}
var rec record
for results.Next(&rec) {
fmt.Println(rec)
}
}
package main
import (
"fmt"
"log"
"gopkg.in/couchbase/gocb.v1"
)
// User is a Basic type
type User struct {
ID string `json:"uid"`
Email string `json:"email"`
Interests []string `json:"interests"`
}
func main() {
cluster, err := gocb.Connect("couchbase://localhost")
if err != nil {
log.Fatal("Connect error", err)
}
authenticator := gocb.PasswordAuthenticator{
Username: "gocb",
Password: "couchbase",
}
err = cluster.Authenticate(authenticator)
if err != nil {
log.Fatal("Cannot authenticate", err)
}
bucket, err := cluster.OpenBucket("beer-sample", "couchbase")
if err != nil {
log.Fatal("Cannot open bucket: ", err)
}
// Use query
query := gocb.NewN1qlQuery("SELECT * FROM `beer-sample`")
rows, err := bucket.ExecuteN1qlQuery(query, nil)
if err != nil {
log.Fatal("Cannot execute N1QL: ", err)
}
var row interface{}
for rows.Next(&row) {
fmt.Printf("Row: %v\n", row)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment