i am using couchbase Community Edition 6.0.0 build 1693 ‧ IPv4
query := "SELECT x.* FROM `gps_tracker` x WHERE x.`type`=$1 LIMIT 1;"
rows, err := cluster.Query(query, &gocb.QueryOptions{PositionalParameters: []interface{}{"device"}})
if err != nil {
panic(err)
}
var vdata interface{}
err = rows.One(&vdata)
if err != nil {
panic(err)
}
fmt.Println(vdata)
shows following error:
http: panic serving [::1]:17149: runtime error: invalid memory address or nil pointer dereference
But using golang sdk it works
getResult, err := collection.Get(“mostain”, &gocb.GetOptions{})
if err != nil {
panic(err)
}
//fmt.Println("##", getResult.Result)
var myContent interface{}
if err := getResult.Content(&myContent); err != nil {
panic(err)
}
fmt.Println("d1:", myContent)
my original document:
There are only one bucket: gps_tracker and contains 2 document only
vsr1
2
Did you try the query in Query Work Bench.
Yes…query working fine with workbench
vsr1
4
Did you create valid bucket connection https://docs.couchbase.com/go-sdk/2.1/howtos/n1ql-queries-with-sdk.html#getting-started
Note : When using a Couchbase version < 6.5 you must create a valid Bucket connection using cluster.Bucket(name)
before you can use N1QL. https://docs.couchbase.com/go-sdk/2.1/hello-world/start-using-sdk.html
Yes i exactly followed that tutorial and wrote following code.
please check my code:
cluster.Bucket(“gps_tracker”)
bucket.DefaultCollection()
query := "SELECT x.* FROM `gps_tracker` x WHERE x.`type`=$1 LIMIT 1;"
rows, err := cluster.Query(query, &gocb.QueryOptions{PositionalParameters: []interface{}{"device"}})
// check query was successful
if err != nil {
panic(err)
}
var vdata interface{}
err = rows.One(&vdata)
if err != nil {
panic(err)
}
fmt.Println(vdata)
vsr1
6
I am not SDK expert some one might have to help you.
you can add this start and try
cluster, err := gocb.Connect(
"localhost",
gocb.ClusterOptions{
Username: "Administrator",
Password: "password",
})
if err != nil {
panic(err)
}
Dear @vsr1 i tried this on my init at the above, still not working, but you tried to help me, i am really grateful for that.
func init() {
cluster, err := gocb.Connect("localhost", gocb.ClusterOptions{
Username: "mostain",
Password: "tEst132$",
})
//fmt.Printf("%T", cluster)
if err != nil {
fmt.Println("Connect:", err.Error())
}
bucket = cluster.Bucket("gps_tracker")
}
vsr1
8
cluster, err :=
This creates new variable inside init function not assign package variable
try
var err error
cluster, err = …
1 Like
Yes @vsr1 my friend your trick working now, great job brother. You really solved my problem. I am really grateful to you. ![:grinning: :grinning:](https://emoji.discourse-cdn.com/twitter/grinning.png?v=12)