【发布时间】:2021-11-21 07:20:23
【问题描述】:
当我构建我的项目时,出现了这两个错误:
闭包参数列表的上下文类型需要 1 个参数,其中 不能被隐式忽略 .flatMap { User.self }
无法将“User.Type”类型的值转换为闭包结果类型 'EventLoopFuture<_>' .flatMap { User.self }
这是我的代码:
import Fluent
import Vapor
struct PostController: RouteCollection {
func boot(routes: RoutesBuilder) throws {
let posts = routes.grouped("posts")
posts.get(use: index)
posts.post(use: create)
posts.group(":postsID") { posts in
posts.delete(use: delete)
}
}
func index(req: Request) throws -> EventLoopFuture<[Post]> {
return Post.query(on: req.db).all()
}
func create(req: Request) throws -> EventLoopFuture<Post> {
let post = try req.content.decode(Post.self)
//return post.save(on: req.db).map { post }
return User.query(on: req.db).filter(\.$id == post.user_id).first()
.unwrap(or: Abort(.notFound))
.flatMap { User.self }
.$posts.create(post, on: req.db)
}
func delete(req: Request) throws -> EventLoopFuture<HTTPStatus> {
return Post.find(req.parameters.get("postsID"), on: req.db)
.unwrap(or: Abort(.notFound))
.flatMap { $0.delete(on: req.db) }
.transform(to: .ok)
}
}
【问题讨论】:
-
您能否编辑您的问题以包含用户的模型定义?另外,您能否在创建路线中添加对您要实现的目标的解释。