Najlepszy sposób na przechowywanie / pobieranie wartości z listy w Mongo / RectiveMongo?
Mam dość powszechny przypadek użycia - listę komentarzy. Każdy komentarz ma autora.
Przechowuję odniesienie z komentarza do autora za pomocą odniesienia, ponieważ autor może robić wiele komentarzy.
Teraz pracuję z ReactiveMongo i chcę spróbować asynchronicznego dostępu do bazy danych, ale w tym przypadku nie wiem jak. Wykonuję asynchroniczny dostęp do bazy danych, aby uzyskać komentarze, ale dla każdego komentarza muszę uzyskać autora i do tej pory jedyny sposób, jaki znam, to zapętlić komentarze i uzyskać synchronicznie użytkownika:
val userOption:Option[JsObject] = Await.result(usersCollection.find(Json.obj("id" -> userId).one[JsObject], timeout)
//...
Poza tym mogłem:
Uzyskaj każdego użytkownika asynchronicznie, ale potem muszę wprowadzić pewne funkcje, aby poczekać, aż wszyscy użytkownicy zostaną pobrani, w celu zwrócenia odpowiedzi, a mój kod prawdopodobnie stanie się bałaganem.
Przechowuj cały obiekt użytkownika - przynajmniej to, czego potrzebuję do komentarza (obraz, nazwa i inne) w każdym komentarzu. Ta redundancja może stać się kłopotliwa w zarządzaniu, ponieważ za każdym razem, gdy użytkownik coś zmienia (istotne dla danych przechowywanych w komentarzach), musiałbym przeglądać wszystkie komentarze w bazie danych i modyfikować je.
Jaki jest właściwy wzór do zastosowania tutaj?