Я разработчик iOS и новичок для Vapor3 и Fluent-ORM Framework.
Я хотел бы получить ответ JSON с 3 различными дочерними классами.
на самом деле я это сделал, но яЯ уверен, что это не очень хороший способ, он только использует функцию карты несколько раз.
кто-нибудь знает лучший способ получить JSON?
Что я ожидал и получил ответ JSON ниже,
"id": 2,
"friends": [
{
"id": 2,
"name": "h1ah",
"userID": 2
}
],
"enemys": [
{
"id": 1,
"name": "dragon",
"userID": 2
}
],
"name": "HI",
"pokemons": [
{
"id": 11,
"level": 1,
"name": "pokemon",
"userID": 2
},
{
"id": 12,
"level": 1,
"name": "pokem1on",
"userID": 2
},
{
"id": 14,
"level": 1,
"name": "pokem1on",
"userID": 2
}
],
"items": []
Ниже мой код.
func getA(_ req:Request) throws -> Future<[UserWithPokomon]> {
return User.query(on: req).sort(\.id, .ascending).all().flatMap({ users in
let futures = try users.map({ user in
try user.pokemons.query(on: req).all().map({ pokemons in
try user.friends.query(on: req).all().map({ friend in
try user.enemys.query(on: req).all().map({ enemies in
try user.items.query(on: req).all().map({ items in
return UserWithPokomon.init(id: user.id!, name: user.username, pokemons: pokemons, friends:friend, enemys:enemies, items:items)
})
})
})
})
})
let aaaa = futures.compactMap({ oo in
return oo.flatMap({ pp in
return pp.flatMap({
return $0.flatMap( { aa in
return aa
})
})
})
})
return aaaa.flatten(on: req)
})
}