MgO конвертировать bson.objectId в строку (hex) в шаблоне html

Я знаю, что эта проблема может дублировать этот. Но до сих пор он не получил удовлетворительного ответа. И я действительно хочу привлечь внимание, чтобы получить решение как можно скорее. Поэтому я прошу вас не закрывать этот вопрос, если у вас есть решение и ответил на него в предыдущем :-)

я опишу вопрос для убеждения:

у меня есть структура данных, которая была сохранена в 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}}

это дает только своего рода строку, как ObjectIdHex("550146d1b51bc1c208d1924d") вместо 550146d1b51bc1c208d1924d что приятно и легко в использовании.

на дублировать выпуск. ОП сказал, что он нашел способ решить эту проблему, "добавив Id_String " к исходной структуре данных. Но я правда не знаю, как это сделать? Это значит назначить его после извлечения ? Поскольку я использую срез для хранения полученных данных, а данные в срезе не могут быть легко изменены. Это будет сложнее сделать, чем выполнить работу в интерфейсе с помощью jquery. Но делать это просто угнетает меня с моей любимой идем :-(.

так есть ли лучший способ сделать это?

2 ответов


на bson.ObjectId предлагает Hex метод, который вернет шестнадцатеричное представление, которое вы ищете, и шаблон пакет позволяет вызывать произвольные методы для значений, которые у вас есть, поэтому нет необходимости хранить это значение в duplicity где-либо еще в виде строки.

Это будет работать, например:

<td>{{$value.Id.Hex}}</td>

вы также можете определить структуру следующим образом

type Data struct {
    Id bson.ObjectId `json:"id" bson:"_id,"`
    Content string `json:"content" bson:"content"`
}

затем вы можете использовать <td>{{$value.Id}}</td> при создании шаблонов html