我正在尝试学习 Futures 和 ReactiveMongo。在我的情况下,我有几个邀请对象,并且想要过滤掉数据库中已经存在的那些。我不想更新或更新数据库中已经存在的那些。因此我创建了一个过滤方法:
过滤方法:
def isAllowedToReview(invite: Invite): Future[Boolean] = {
ReviewDAO.findById(invite.recoId, invite.invitedUserId).map {
maybeReview => {
maybeReview match {
case Some(review) => false
case None => true
}
}
}
}
道:
def findById(rId: Long, userId: Long): Future[Option[Review]] = findOne(Json.obj("rId" -> recoId, "userId" -> userId))
def findOne(query: JsObject)(implicit reader: Reads[T]): Future[Option[T]] = {
collection.find(query).one[T]
}
然后调用:
val futureOptionSet: Set[Future[Option[Invite]]] = smsSet.filter(isAllowedToReview)
save the filtered set somehow...
这不起作用,因为在这种情况下过滤器需要,Invite => Boolean
但我正在发送Invite => Future(Boolean)
. 您将如何过滤和保存它?