我正在使用 Go 和 MongoDB 构建一个 RESTful API,并且在将一个文档的 JSON 嵌入另一个文档的 JSON 中遇到了一些困难。这是我正在尝试完成的一个玩具示例。我有以下模式:
type Post struct {
ID bson.ObjectId `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Owner bson.ObjectId `json:"owner,omitempty"` // references a User
}
type User struct {
ID bson.ObjectId `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
在为帖子创建 JSON 时,我想首先在 MongoDB 中查找帖子的所有者,并将生成的用户嵌入到所述帖子的 JSON(代替原始 JSON ObjectId)中,如下所示:
{
"id": "...",
"title": "My awesome post",
"owner": {
"id": "...",
"name": "Cody"
}
}
除了使用 手动构建 JSON 之外,我不太确定如何完成此操作map[string]interface{},如下所示:
post := LookupPost(...)
user := LookupUser(post.Owner)
m := map[string]interface{}{
"id": post.ID,
"title": post.Title,
"owner": map[string]interface{}{
"id": user.ID,
"name": user.Name,
},
}
b, _ := json.Marshal(m)
理想情况下,我能够利用json
每个结构定义中的标签并自动插入字段。
我是否遗漏了什么,或者我试图做的事情是不可能的?或者我只是没有正确地在 Go 中接近 MongoDB/JSON?从正确的角度来看,我来自 Node.js 背景,在那里这种功能是微不足道的。
Helenr
慕少森
相关分类