2

这是一个 Swift、Vapor 相关的问题。

尝试创建 ResponseRepresentable 类时如何访问 FluentValue 类型?

VaporModel协议需要一个 ID;我想将我的 ID 变量分配为 FluentValue 可选。但是,我找不到它(即使在 Import Vapor & Import Fluent 之后)。

import Vapor
import VaporMySQL

let drop = Droplet()

drop.post(String.self, "boughtcoffee")     { request, buyerName in

   let coffeeledger = CoffeeLedger(name: buyerName, time: 0)

   guard let atLeastOneDrinker = request.data["drinker"].string else { 
       throw Abort.custom(status: .badRequest, message: "Please enter some drinkers")
}
     return coffeeledger
}

进口蒸汽进口流利

final class CoffeeLedger: Model {
    var id: FluentValue?
    var name: String
    var time: Int

    init (name: String, time: Int){
        self.name = name
        self.time = time
    }
}

我正在关注有关设置响应可表示模型的 Vapor 视频。 https://www.youtube.com/watch?v=E1ir7_s_VTw

4

2 回答 2

3

FluentValue变成Node蒸气 0.15。(此时 Vapor 的当前版本是 0.16)。

此外,initandserialize方法变成了init(node: ...)and makeNode()

模型页面 ( https://vapor.github.io/documentation/fluent/model.html ) 上的代码应该是最新的并且适用于 Vapor 0.15 及更高版本。

如果您遇到特定错误,请在此处使用该错误消息创建另一个问题,我可以尝试提供帮助!

于 2016-08-07T20:50:11.087 回答
2

伟大的。这很好用。以下内容基于您的文档。希望它可以帮助其他使用 Vapor 的人:

import Vapor
import Fluent


final class CoffeeLedger: Model {
var id: Node?
var buyername: String
var drinkername: String
var time: Int

init(buyername: String, drinkername: String, time: Int) {
    self.buyername = buyername
    self.drinkername = drinkername
    self.time = time
}

init(node: Node, in context: Context) throws {
    id = try node.extract("id")
    buyername = try node.extract("buyername")
    drinkername = try node.extract("drinkername")
    time = try node.extract("time")
}

func makeNode() throws -> Node {
    return try Node(node: [
        "id": id,
        "buyername": buyername,
        "drinkername": drinkername,
        "time": time
        ])
}

static func prepare(_ database: Database) throws {
    try database.create("Ledger") { users in
        users.id()
        users.string("buyername")
        users.string("drinkername")
        users.int("time")
    }
}

static func revert(_ database: Database) throws {
    try database.delete("Ledger")
}
}
于 2016-08-08T09:25:32.207 回答