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)
います。これをどのようにフィルタリングして保存しますか?