9

この問題がこれと重複している可能性があることはわかっています。しかし、今のところ満足のいく答えは得られていません。そして、できるだけ早く解決策を得るために注意を向けたいと思っています。したがって、解決策がなく、前の問題で回答がない限り、この問題を閉じないでください:-)

納得させるために問題を説明します。

知られているように、mongodb に格納されたデータ構造があります_id。mongodb は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}}

That Only のような文字列のようなものを提供しObjectIdHex("550146d1b51bc1c208d1924d")ます550146d1b51bc1c208d1924d

重複号で。op はId_String、元のデータ構造に「 を追加する」ことでこれを解決する方法を見つけたと述べています。しかし、私はこれを行う方法が本当にわかりませんか?取得後に割り当てるということですか?取得したデータを保存するためにスライスを使用しているため、スライス内のデータは簡単に変更できませんでした。jqueryを使用してフロントエンドで仕事をするよりも、それを行う方が複雑になります。しかし、それを行うと、愛するGoで私を憂鬱にさせるだけです:-(。

それを行うためのより良い方法はありますか?

4

2 に答える 2

16

bson.ObjectId型は、探している 16 進表現を返すHexメソッドを提供します。テンプレートパッケージを使用すると、手元にある値に対して任意のメソッドを呼び出すことができるため、その値を重複して他の場所に保存する必要はありません。文字列。

これは、たとえば次のように機能します。

<td>{{$value.Id.Hex}}</td>
于 2015-03-12T13:54:48.037 に答える