我知道这个问题可能与this one重复。但到目前为止还没有得到满意的答案。我真的想引起一些关注,尽快找到解决方案。所以我请求你不要关闭这个问题,除非你有解决方案并在前一个问题中回答: - )
我将描述说服的问题:
我有一个存储在mongodb中的数据结构,众所周知,mongodb的_id
是bson.ObjectId
类型,我可以用这样的方式检索它:
type Data struct {
Id bson.ObjectId `bson:"_id,omitempty"`
Content string `bson:"content"`
}
然后我通过查找特定的查询条件获得了Data
切片,并使用http/template
中的切片来呈现前端视图。为了操作切片中的每个项目,我想使用Id
字段,但在使用时:
{{range $key, $value := .DataSlice}}
<td>{{$value.Id}}</td>
{{end}}
仅提供一种类似ObjectIdHex("550146d1b51bc1c208d1924d")
而不是550146d1b51bc1c208d1924d
的字符串,它很好用且易于使用。
在duplicate issue中。操作人员说,他找到了一种方法来解决这个问题,方法是“在原始数据结构中添加Id_String
”。但我真的不知道该怎么做?这是指在检索后分配它吗?由于我使用切片来存储检索到的数据,因此切片中的数据无法轻易更改。这样做比使用jquery做前端的工作要复杂得多。但这样做只会让我心爱的Go :-(。
那么还有更好的方法吗?
答案 0 :(得分:15)
bson.ObjectId类型提供了一个Hex方法,它将返回您要查找的十六进制表示形式,template包允许您调用您手头的值的任意方法,因此,不需要将该值作为字符串存储在其他任何地方。
这可行,例如:
<td>{{$value.Id.Hex}}</td>
答案 1 :(得分:0)
你也可以按如下方式定义struct
type Data struct {
Id bson.ObjectId `json:"id" bson:"_id,"`
Content string `json:"content" bson:"content"`
}
然后你可以在模板html时使用<td>{{$value.Id}}</td>