将Vapor用于返回模型到节点:
func indexView(request: Request) throws -> ResponseRepresentable
{
let acro = try Acronym.makeQuery().sort(Acronym.idKey, .ascending)
return try acro.all().makeNode(in: <#T##Context?#>)
}
它总是返回错误,不知道如何修复它。
答案 0 :(得分:1)
上下文通常用于传递Vapor内部的当前使用信息。 Vapor 3文档似乎没有包含详细信息(但是),但请参阅https://docs.vapor.codes/2.0/node/getting-started/了解Vapor 2.我从未在makeNode中找到它们,因此请执行以下操作:
return try acro.all().makeNode(in:nil)
应该让它发挥作用。
答案 1 :(得分:1)
节点已在Vapor3中逐步淘汰。因为它依赖于Swift的本机数据类型+协议,所以不需要它。在这种情况下,Vapor 3使用Content来使用JSON。 (默认情况下,内容符合Codable)
e.g。
final class Person: Content, MySQLModel, Migration {
var id: Int?
var name: String
init(id: Int? = nil, name: String) {
self.id = id
self.name = name
}
}
func person(_ req: Request) throws -> Future<Person> {
return Person(name: "Mark")
}
router.get("test") { req -> Future<[Person]> in
return try Person.query(on: req).sort(\.id, .ascending).all()
}
摘自文档:
在Vapor 3中,所有内容类型(JSON,protobuf,URLEncodedForm,Multipart等)都被视为相同。解析和序列化内容所需的只是一个Codable类或结构。