У меня есть пользователи и группы в моей системе.Пользователи принадлежат к группам, использующим родственные связи.Мне нужно преобразовать пользователей / группы в массив пользователей / групп, чтобы вернуться к клиенту.Когда я ищу пользователя, я получаю Future, если затем сопоставляю использование и пытаюсь получить доступ к его группам, я получаю Future.
Каков наилучший способ обработки вложенных фьючерсов, чтобы я мог получить реальные данные и обработать их?
struct ReturnUserStruct {
var userId: Int
var primaryGroupName: String
}
let futureUsers = Users.query(on: request).all()
futureUsers.map { users in
var returnUsersArray<returnUserStruct> = []
users.ForEach { user in
var returnUserStruct: ReturnUserStruct
returnUserStruct.userId = user.id
// This a sibling relationship that returns a Future
primaryGroupFuture = user.primaryGroup
primaryGroupFuture.map { group in
returnUserStruct.primaryGroupName = group.name
}
returnUsersArray.append(returnUserStruct)
}
return returnUsersArray
Этот код не работает.Вызов карты, очевидно, запланирован асинхронно, а returnUsersArray заканчивается пустым.Я могу изменить это и получить идентификаторы пользователя в массиве возврата, но не нашел хорошего способа получить groupName.