【发布时间】:2019-03-05 16:11:59
【问题描述】:
如何使用transactions 将模型数组更新为mysql?操作成功后返回Ok响应
【问题讨论】:
-
使用原始 SQL 查询或 Fluent ?
-
@nathan,在
Vapor 3swift 框架中使用Fluent MySQL包
如何使用transactions 将模型数组更新为mysql?操作成功后返回Ok响应
【问题讨论】:
Vapor 3 swift 框架中使用Fluent MySQL 包
所以,我在没有交易的情况下解决了我的问题:
func update(_ req: Request, todos: [CreateTodoRequest]) throws -> Future<HTTPStatus> {
let user = try req.requireAuthenticated(User.self)
// 1
return try todos.map { try Todo(todo: $0, userID: user.requireID()).create(on: req) }
// 2
.flatten(on: req)
// 3
.transform(to: .ok)
}
.create(on: req) 返回一个EventLoopFuture<Todo>。所以todos.map 将返回一个[EventLoopFuture<Todo>] 的数组。第二步是将其转换为EventLoopFuture<[Todo]>。而第三步,将其转化为HttpStatus.ok响应
【讨论】: