2016-08-07 6 views
2

これはSwift、Vapor関連の質問です。蒸気 - FluentValueタイプにアクセスするには?

ResponseRepresentableクラスの作成時にFluentValueタイプにアクセスするにはどうすればよいですか?

蒸気ModelプロトコルはIDを要求します。 ID変数をFluentValueオプションとして割り当てる必要があります。しかし、私はそれを見つけることができません(インポート蒸気&輸入の後でも)。

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

私は応答表現可能なモデルを設定するに蒸気の動画を以下しています。 https://www.youtube.com/watch?v=E1ir7_s_VTw

+0

- これについてhttps://vapor.github.io/documentation/fluent/model.html上のいくつかの背景がある。うまくいけば、それは気を使っている人を支援します。このコードはNode型を参照します。しかし、私はモデルに準拠するようにそのコードを取得できませんでした。 – rustyMagnet

答えて

3

FluentValueは、蒸気0.15でNodeとなった。 (今回の蒸気の現在のバージョンは0.16です)。

さらに、initおよびの方法はinit(node: ...)およびmakeNode()になりました。

モデルページのコード(https://vapor.github.io/documentation/fluent/model.html)は最新で、蒸気0.15以降で作業する必要があります。

エラーが発生している場合は、そのエラーメッセージで別の質問を作成してください。

2

素晴らしい。それは美しく動作します。以下はあなたの文書に基づいています。ところで

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") 
} 
} 
関連する問題