升级到 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
闭包中检索它
在我的旧 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
闭包中检索它