Die beste Möglichkeit, Werte zu speichern / abzurufen, auf die in einer Liste in Mongo / RectiveMongo verwiesen wird?

Ich habe einen ziemlich häufigen Anwendungsfall - eine Liste von Kommentaren. Jeder Kommentar hat einen Autor.

Ich speichere die Referenz aus einem Kommentar mit einer Referenz an den Autor, da ein Autor mehrere Kommentare abgeben kann.

Jetzt arbeite ich mit ReactiveMongo und möchte versuchen, den Datenbankzugriff asynchron zu halten, aber in diesem Fall weiß ich nicht, wie. Ich greife asynchron auf die Datenbank zu, um die Kommentare abzurufen, aber dann muss ich für jeden Kommentar den Autor abrufen. Bisher kenne ich nur die Möglichkeit, die Kommentare zu durchlaufen und den Benutzer synchron abzurufen:

val userOption:Option[JsObject] = Await.result(usersCollection.find(Json.obj("id" -> userId).one[JsObject], timeout)
//...

Ansonsten könnte ich:

Holen Sie sich jeden Benutzer asynchron, aber dann muss ich einige Funktionen einführen, um zu warten, bis alle Benutzer abgerufen wurden, um die Antwort zurückzugeben, und mein Code wird wahrscheinlich ein Chaos.

Speichern Sie das gesamte Benutzerobjekt - mindestens das, was ich für den Kommentar (Bild, Name usw.) in jedem Kommentar benötige. Diese Redundanz kann schwierig zu verwalten sein, da ich jedes Mal, wenn ein Benutzer etwas ändert (was für die in den Kommentaren gespeicherten Daten relevant ist), alle Kommentare in der Datenbank durchgehen und ändern müsste.

Welches ist das richtige Muster, um es hier anzuwenden?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage