我有以下代码,从数据库返回的内容可能是一条记录,也可能什么都没有,一旦获得数据库返回,我会检查它是否具有record(EmailStatus object)
,然后将其转换为单个EmailStatus的列表对象,否则返回默认EmailStatus
对象的列表
database
.getLatestEmailStatusByEmail(email)
.map(
emailStatusDTO =>
if (emailStatusDTO == None) List(emailStatusDTO.default(email))
else List(emailStatusDTO)
)
.leftMap[HttpError] {
case e =>
logger.error(LoggingMessage(
requestId,
s"Retrieve events by ${email} failed, ${e.getClass.getSimpleName} : ${e.message}"))
DatabaseError(e.message, requestId)
}
但投诉:
comparing case class values of types .core.dto.EmailStatusDTO and None.type using `==' will always yield false
if (emailStatusDTO == None)
从数据库返回的类型:
database.getLatestEmailStatusByEmail(email)
是
type ServiceResult[Err, A] = EitherT[Future, Err, A]
def apply[A](a: Future[Option[A]], error: Err)(
implicit ec: ExecutionContext): ServiceResult[Err, A] =
EitherT(a map (data => Either.fromOption(data, error)))
}
和EmailStatus
是一个案例类。
因此,在我的情况下,它将返回Future[Option[EmailStatusDto]]
,所以如何检查数据库返回是否为None?
还将支票更改为isEmpty
,但也无效:
if (emailStatusDTO.isEmpty) List(EmailStatusDTO.normal(email.email))
if (emailStatusDTO.isEmpty()) List(EmailStatusDTO.normal(email.email))
它说“无法解析符号isEmpty”