Представьте, что у меня есть класс case:
case class Team(_id: Option[BSONObjectID], name: String = "", city: String = "", country: String = "")
И я передаю это в свой шаблон (в Play 2.5/Scala/reactiveMongo 0.11.14) вот так:
@(teams : Seq[models.Team])
...
@for(team <- teams){
<tr>
<td>@team._id</td>
<td>@team.name</td>
<td>@team.city</td>
<td>@team.country</td>
</tr>
}
...
Мне нужно преобразовать @team._id
(который в настоящее время имеет тип Option[BSONObjectID]
) в string
, то есть только символы BSONObjectID
в виде string
. Я пытался объявить повторно используемые значения как задокументировано здесь, но я не могу понять это правильно. Обычно я бы использовал flatMap
, но в шаблоне это не работает должным образом. Спасибо за любую помощь!
Исходя из этого, теперь кажется, что я должен использовать метод в классе case case, как предложил @marcospereira. Однако я немного застрял (что неудивительно!) в синтаксисе выражения регулярного выражения. Итак, я пытаюсь сделать такую строку: BSONObjectID("59654f33b17946eac2323b3e")
будет просто 59654f33b17946eac2323b3e
. Вот что у меня есть:
def idAsString = _id.flatMap(bson => """\".*?(")""".r.findFirstIn(bson.toString)).getOrElse("")
Но это также возвращает кавычки, например. "59654f33b17946eac2323b3e"
. Как уже упоминалось, мне они не нужны - спасибо всем, кто может помочь с этим, поскольку я не могу правильно понять синтаксис.