コメントのリストという非常に一般的な使用例があります。各コメントには作成者がいます。
著者は複数のコメントを作成できるため、参照を使用してコメントから著者への参照を保存しています。
現在、ReactiveMongo を使用しており、データベースへのアクセスを非同期に維持したいと考えていますが、この場合、方法がわかりません。コメントを取得するためにデータベースへの非同期アクセスを行いますが、コメントごとに作成者を取得する必要があります。これまでのところ、コメントをループしてユーザーを同期的に取得する方法しかありません。
val userOption:Option[JsObject] = Await.result(usersCollection.find(Json.obj("id" -> userId).one[JsObject], timeout)
//...
それ以外に、次のことができます。
各ユーザーを非同期に取得しますが、応答を返すためにすべてのユーザーがフェッチされるまで待機する機能を導入する必要があり、コードが混乱する可能性があります。
完全なユーザー オブジェクトを保存します。少なくとも、各コメントのコメント (画像、名前など) に必要なものです。ユーザーが何か (コメントに保存されているデータに関連するもの) を変更するたびに、データベース内のすべてのコメントを調べて変更する必要があるため、この冗長性は管理が面倒になる可能性があります。
ここで適用する正しいパターンは何ですか?