Casbah - getAsOrElse 不处理选项值

Casbah - getAsOrElse not working on Option values

我有以下代码:

new Room(
  dbObject.get("_id").get.toString,
  List[User]() ,
  List[Message](),
  dbObject.getAs[Date]("creation").get,
  //dbObject.getAsOrElse[Option[Date]]("expires", None),
  if(dbObject.containsField("expires")) 
    Some(dbObject.getAs[Date]("expires").get) 
  else 
    None,
  List[String]())

我想知道我在使用 getAsOrElse 时做错了什么,因为如果我使用注释行,我将永远无法从字段 expires 中获取值。要修复它,我需要执行 if 语句来获取值。

提前致谢。

As getAs[T] returns Option[T] 你可以使用那个,例如:

dbObject.getAs[Date]("expires")

将 return Some(dateValue) 如果过期字段属于 Date 或者 return None 如果过期字段不存在 如果过期字段不可转换为 Date.