bson.ObjectId в шаблоне

У меня есть структура с типом bson.ObjectId, например что-то вроде этого:

type Test struct {
     Id bson.ObjectId
     Name string
     Foo string
}

Я хочу сделать это в HTML-шаблон

{{ Name }} {{ Food }}
<a href="/remove/{{ Id }}">Remove me</a>

Но это, очевидно, не работает, так как {{ Id }} просто вернул бы тип ObjectId, есть ли способ преобразовать это в строку внутри шаблона?

Или я должен сделать это, когда я передаю данные template.Execute?

3 ответа

Решение

Призвание id.Hex() вернет строковое представление bson.ObjectId,

Это также поведение по умолчанию, если вы пытаетесь маршалировать один bson.ObjectId в строку json.

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

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

<a href="/remove/{{ .Id.Hex }}">Remove me</a>

Вещи, как работать площадка Просто определите точку . для вашего шаблона

{{ .Name }} {{ .Food }}
<a href="/remove/{{ .Id }}">Remove me</a>
Другие вопросы по тегам