我想从数据库中查询所有用户朋友的帖子。我已经制定了以下代码,它似乎可以工作,但看起来不太好,尤其是我过滤具有用户 ID 的帖子的部分。
user.$friends
.query(on: request.db)
.all()
.flatMap { (friends: Array<User>) -> EventLoopFuture<Page<Post>> in
return Post
.query(on: request.db)
.filter(\.$user.$id ~~ friends.reduce(into: [], { (ids: inout Set<UUID>, user: User) in
if let id: UUID = user.id {
ids.insert(id)
}
}))
.sort(\.$createdAt)
.paginate(for: request)
}
如何清理此代码?