У меня есть две коллекции в Firestore db
1. проекты
2.Users
'projects' имеет поле 'selected_by', в котором хранится идентификатор пользователя, который его создал. Я хочу получить проекты вместе со всеми полями пользователя, который его создал.
Следующий код работает, но я не уверен, является ли это правильным способом и как мы узнаем, когда выборка пользовательских данных для каждого проекта завершена.
fun getProjects(){
val works = arrayListOf<Work>()
db.collection("projects")
.get()
.addOnSuccessListener { documents ->
for (document in documents) {
val work = Work(document.id,
document.data.get("title").toString(),
document.data.get("skills") as ArrayList<String>,
document.data.get("date_created") as Date)
works.add(work)
db.collection("users").document(document.data.get("created_by").toString()).get()
.addOnSuccessListener {
documentSnapshot ->
work.created_by = User(documentSnapshot.data?.get("name").toString(),
documentSnapshot.data?.get("mob").toString(),
documentSnapshot.data?.get("role").toString(),
documentSnapshot.data?.get("rating").toString(),
documentSnapshot.data?.get("skills") as ArrayList<String>
)
Log.d("works", works.toString())
}
}
}
.addOnFailureListener { exception ->
Log.w(TAG, "Error getting documents: ", exception)
}
}