play2 アプリケーションで、いくつかのネストされた呼び出しを reactmongo と結合しようとしています。から返されたオブジェクトのリストを取得しますcreateObjects
。次に、それらをループし、オブジェクトがコレクションに存在するかどうかを確認し、存在しない場合は挿入します。
def dostuff() = Action {
implicit request =>
form.bindFromRequest.fold(
errors => BadRequest(views.html.invite(errors)),
form => {
val objectsReadyForSave = createObjects(form.companyId, form.companyName, sms_pattern.findAllIn(form.phoneNumbers).toSet)
Async {
for(object <- objectsReadyForSave) {
collection.find(BSONDocument("cId" -> object.get.cId,"userId" ->
object.userId.get)).cursor.headOption.map { maybeFound =>
maybeFound.map { found =>
Logger.info("Found record, do not insert")
} getOrElse {
collection.insert(object)
}
}
}
Future(Ok(views.html.invite(form)))
}
})
}
この方法は、「play2」や「reactivemongo」ではなく、できる限りではないと感じています。私の質問は次のとおりです。ネストされた呼び出しをどのように構成して、必要な結果を取得し、挿入されたオブジェクトの情報を取得する必要がありますか?