升级到 Vapor 4:如何创建模型并将其返回

Upgrading to Vapor 4: how to create a model and returning it

在我的旧 Vapor 3 代码中,我正在创建这样的模型:

address.create(on: conn).flatMap { savedAddress in
    // do something with saved address
}

在 Vapor 4 文档的帮助下,我现在将 db 传递给创建函数而不是连接。问题是,似乎 flatMap returns 无效,因为当我尝试访问 savedAddress 时出现以下错误:"Value of tuple type 'Void' has no member ...".

我该如何重写?

因为 Fluent 4 中的所有模型都必须是 类,你可以依靠引用语义来做你想做的事情(这就是为什么 create(on:) returns EventLoopFuture<Void>。因此,在您的示例中,您可以使用 address 作为保存的模型,而不是 savedAddress。保存后,Fluent 将在 [=13] 上设置模型的 ID 属性 =] 对象,然后您可以使用 address.requireID()

flatMap 闭包中检索它