Vapor Swift 流利:表达类型含糊不清,没有更多上下文
Vapor Swift Fluent : Type of expression is ambiguous without more context
这是我的路线:
router.get("answers","delete", Int.parameter) { req -> Future<Response> in
let answerID = try req.parameters.next(Int.self)
guard let _ = getUsername(req) else {
throw Abort(.unauthorized)
}
return Message.query(on: req).filter(\.id == answerID).first().map(to: Response.self) { answer in
guard let answer = answer else {
throw Abort(.notFound)
}
return answer.delete(on: req).map(to: Response.self) { _ in
return req.redirect(to: "/answers")
}
}
}
但是对于 xCode 来说,这是不明确的,没有更多上下文 .filter(\.id == answerID)
这是我的结构消息:
struct Message: Content, SQLiteUUIDModel, Migration {
var id: UUID?
var username: String
var content: String
var category: String
var question: String
var date: Date
}
我不明白,因为我在许多其他路由中对 id 使用过滤器,这是我第一次显示此错误。
我在谷歌上搜索了一下,似乎在未导入 Fluent 时会出现错误,但我已经 import Fluent
位于顶部。
我刚刚有时间测试你的代码。如果你替换
... .map(to: Response.self) { answer in ....
和
... .flatMap(to:Response.self) { answer in ...
有效。
这是我的路线:
router.get("answers","delete", Int.parameter) { req -> Future<Response> in
let answerID = try req.parameters.next(Int.self)
guard let _ = getUsername(req) else {
throw Abort(.unauthorized)
}
return Message.query(on: req).filter(\.id == answerID).first().map(to: Response.self) { answer in
guard let answer = answer else {
throw Abort(.notFound)
}
return answer.delete(on: req).map(to: Response.self) { _ in
return req.redirect(to: "/answers")
}
}
}
但是对于 xCode 来说,这是不明确的,没有更多上下文 .filter(\.id == answerID)
这是我的结构消息:
struct Message: Content, SQLiteUUIDModel, Migration {
var id: UUID?
var username: String
var content: String
var category: String
var question: String
var date: Date
}
我不明白,因为我在许多其他路由中对 id 使用过滤器,这是我第一次显示此错误。
我在谷歌上搜索了一下,似乎在未导入 Fluent 时会出现错误,但我已经 import Fluent
位于顶部。
我刚刚有时间测试你的代码。如果你替换
... .map(to: Response.self) { answer in ....
和
... .flatMap(to:Response.self) { answer in ...
有效。