2016-10-03 6 views
0

を使用してモンゴデータベースにオブジェクトを挿入しますcreate()メソッドの構文を理解できません。キーワードyieldを使用せずに別の書き込み方法がありますか?私はまだScalaを学んでおり、このメソッドの仕組みが分かりません。は、私はすべて一緒にスカラ座、MongoDBのとプレイフレームワークを使用する方法を学んでいます、と私はここに位置してデモプロジェクトを見てきたScalaのReactiveMongoドライバ

def create(name: String, population: Int) = Action.async { 
    for { 
     cities <- citiesFuture 
     lastError <- cities.insert(City(name, population)) 
    } yield 
     Ok("Mongo LastError: %s".format(lastError)) 
    } 
+0

最初の[ドキュメント](HTTP読むことをお勧めします:// reactivemongoを。 org/releases/0.11/documentation/index.html) – cchantep

答えて

0

あなたがのために、歩留まりの構文を使用したくない場合は、同等にあなたのコードを変換することができます

citiesFuture 
    .flatMap (cities => cities.insert(City(name, population)) 
    .map (lastError => Ok(s"Mongo LastError: $lastError")) 
+0

よかった、ありがとう!私は 'flatMap()'を 'map()'に置き換えることができるのだろうか、 'flatMap()'を使用する特定の理由はありますか?私はもう一方を使うときをいつ理解するか把握しています。 – Calculus5000

+0

この場合、あなたはFuture [Future [String]]を取得するので、ここではflatMapの代わりにマップを使用することはできません。先物のチェーンを作るには:まずcitiesFutureを実行し、future.insert(...)を実行するよりもflatMapを使う必要があります。そして最後にcities.insertの結果でmapを使ってStringの結果をPlayの 'Ok'に変換することができます – Nyavro

関連する問題