makeNode(in:Context)steam 3中的上下文是什么?

时间:2018-03-10 18:20:04

标签: swift vapor

将Vapor用于返回模型到节点:

 func indexView(request: Request) throws -> ResponseRepresentable
    {
        let acro = try Acronym.makeQuery().sort(Acronym.idKey, .ascending)

        return try acro.all().makeNode(in: <#T##Context?#>)
    }

它总是返回错误,不知道如何修复它。

2 个答案:

答案 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类或结构。