在我以前的Vapor 3代码中,我是这样创建模型的。
address.create(on: conn).flatMap { savedAddress in
// do something with saved address
}
在Vapor 4文档的帮助下,我现在将db传递给create函数,而不是连接。问题是,似乎flatMap返回的是Void,因为当我试图访问saveAddress时得到了以下错误。"Value of tuple type 'Void' has no member ..."。
我应该如何重写?
因为 Fluent 4 中的所有模型都必须是类,所以你可以依靠引用语义来做你想要的事情(这就是为什么 create(on:)
返回 EventLoopFuture<Void>
. 因此,在你的例子中,而不是 savedAddress
你可以直接使用 address
作为保存的模型。当它被保存后,Fluent 会在您的模型的 address
对象,然后你可以在你的 flatMap
封闭 address.requireID()