2016-08-07 4 views
2

이것은 Swift, Vapor 관련 질문입니다.증기 - FluentValue 유형에 액세스하는 방법?

ResponseRepresentable 클래스를 만들려고 할 때 FluentValue 유형에 액세스하려면 어떻게해야합니까?

증기 Model 프로토콜에는 ID가 필요합니다. 내 ID 변수를 FluentValue 옵션으로 지정하려고합니다. 그러나 가져올 증기 (& 가져 오기 유창한 후에도)를 찾을 수 없습니다. 내가 응답 표현할 수있는 모델을 설정에 증기 비디오를 다음입니다

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

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

유창함

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 
} 

수입 증기 수입. https://www.youtube.com/watch?v=E1ir7_s_VTw

+0

btw - https://vapor.github.io/documentation/fluent/model.html에 대한 배경 지식이 있습니다. 이 코드는 Node 유형을 참조합니다. 그러나 모델에 맞게 코드를 가져올 수 없습니다. – rustyMagnet

답변

3

FluentValue은 증기 0.15에서 Node이되었다. (현재 증기의 현재 버전은 0.16입니다.)

또한, initserialize 방법은 init(node: ...)makeNode()이되었습니다.

모델 페이지 (https://vapor.github.io/documentation/fluent/model.html)의 코드는 Vap 0.15 이상으로 최신이어야합니다.

오류가 발생하는 경우 여기에 다른 오류 메시지가 표시되며 도움을 요청할 수 있습니다.

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") 
} 
}