我正在使用 Vapor Fluent 实现删除路由处理程序。
对于这个处理程序,我想验证user
发送产品删除请求是 的所有者,product
否则Abort
请求。
func deleteHandler(_ req: Request) throws -> EventLoopFuture<HTTPStatus> {
let user = req.auth.get(User.self)
return Product.find(req.parameters.get("productID"), on: req.db)
.unwrap(or: Abort(.notFound))
.flatMap { product in
return product.$user.get(on: req.db).flatMapThrowing { owner in
guard try user?.requireID() == owner.requireID() else {
throw Abort(.forbidden)
}
return try product.delete(on: req.db)
.transform(to: HTTPStatus.noContent) // error here
}
}
}
但是 Vapor 在return try product.delete(on: req.db).transform(to: HTTPStatus.noContent)
说Cannot convert return expression of type 'EventLoopFuture<HTTPResponseStatus>' to return type 'HTTPStatus' (aka 'HTTPResponseStatus')
.
我尝试使用 再次链接map({})
,但没有帮助。使用wait()
解决了错误,但引入了运行时错误。
谢谢你的帮助!