Vapor - как получить доступ к типу FluentValue?

Это вопрос Swift, связанный с Vapor.

Как получить доступ к типу FluentValue при попытке создать класс ResponseRepresentable?

Протокол Vapor Model требует 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
}

импорт пара импорт Fluent

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


person rustyMagnet    schedule 07.08.2016    source источник
comment
кстати - есть некоторая предыстория steam.github.io/documentation/fluent/model.html об этом. Этот код относится к типу узла. Однако мне не удалось заставить этот код соответствовать Model.   -  person rustyMagnet    schedule 07.08.2016


Ответы (2)


FluentValue стал Node в Vapor 0.15. (Текущая версия Vapor на данный момент - 0,16).

Кроме того, методы init и serialize превратились в init(node: ...) и makeNode().

Код на странице модели (https://vapor.github.io/documentation/fluent/model.html) должен быть актуальным и работать с Vapor 0.15 или более поздней версии.

Если вы получаете конкретную ошибку, задайте здесь еще один вопрос с этим сообщением об ошибке, и я могу попытаться помочь!

person tanner0101    schedule 07.08.2016

Большой. Это прекрасно работает. Следующее основано на вашей документации. Надеюсь, это поможет другим, использующим 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")
}
}
person rustyMagnet    schedule 08.08.2016