【发布时间】:2015-04-28 11:57:26
【问题描述】:
我有一个 widget.json 文件,它被加载到 couchbase 中的文档中:
{
"type": "widget",
"name": "clicker",
"description": "clicks!"
}
我还有一个用于存储桶的 couchbase 设计文档 couchbase.ddoc。它以名称“views”注册:
{
"_id": "_design/accesscheck",
"language": "javascript",
"views": {
"all_widgets": {
"map": "function(doc, meta) { if(doc.type == 'widget') { emit(meta.id, doc.name); } }"
}
}
}
还有一些 golang 代码,使用 couchbase golang API 来获取它:
opts := map[string]interface{}{
"stale": false
}
data, _ := bucket.View("views", "all_widgets", opts)
在这一点上我还有几个问题:
- 确定我可以使用“数据”变量做什么的最佳方法是什么?我怀疑这是一个整数索引行的列表,每个行都包含一个键/值映射,其中值可以是不同的类型。我看到很多关于 map[string]interface{} 的简单示例,但这似乎有一个额外的间接级别。在 C 语言中易于理解,恕我直言,但界面{}{} 让我感到困惑。
- 可能是上述答案的扩展,但如何使用设计文档进行有效搜索?我宁愿让 Couchbase 服务器进行筛选。
-
一些 Get() 示例传入结构类型,即
type User struct { Name string `json:"name"` Id string `json:"id"` } err = bucket.Get("1", &user) if err != nil { log.Fatalf("Failed to get data from the cluster (%s)\n", err) } fmt.Printf("Got back a user with a name of (%s) and id (%s)\n", user.Name, user.Id)
是否可以用 View() 做类似的事情?
- 有人知道灵活地将 View 机制连接到 net/http REST 处理程序的好方法吗?只是希望..
我没有在 golang 客户端 API 示例或文档中找到这些问题。我可能错过了什么。如果有人有链接,请告诉我。
感谢您的帮助!
【问题讨论】: