【问题标题】:How to make "future" from an array in Vapor?如何从 Vapor 中的数组中创造“未来”?
【发布时间】:2020-04-07 17:09:19
【问题描述】:

有以下代码:

router.get("/fetchOngoingReleases", String.parameter) { (request) -> Future<[ReleaseWithUser]> in
    return Release.query(on: request).filter(\.inProgress == true).all().flatMap { (ra) -> EventLoopFuture<[ReleaseWithUser]> in
        let userId = try request.parameters.next(String.self)
        return User.query(on: request).filter(\.fbId == userId).first().flatMap { (user) -> EventLoopFuture<[ReleaseWithUser]> in
            let a = ra.map { (r) -> ReleaseWithUser in
                // some condition and logic here
            }

            return a. //need this to make future
        }
    }
}

我检查了所有可能的方法调用,但没有一个将 [ReleaseWithUser] 转换为 Future&lt;[ReleaseWithUser]&gt;。你有什么想法吗?

【问题讨论】:

  • 这个.join(\ReleaseUser.id, to: \Release.id, method: .left) 看起来有问题。您应该将主键加入外键而不是另一个主键吗?
  • 如果在 ReleaseUser 模型中将 releaseId 和 userId 设为可选会发生什么?
  • 为什么你把这个问题与原来的问题完全改变了?在不同的问题中问不同的问题不是更好吗!!!
  • 对不起。我不知道如何在 30 天内处理 50 个问题。我经常到达。

标签: swift vapor


【解决方案1】:

解决办法是:

ra.map { (r) -> ReleaseWithUser in
// some condition and logic here
}.flatten(on: request)

数组可以用flatten()转换成未来数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多