簡體   English   中英

蒸氣連接到SQLite數據庫

[英]Vapor connect to SQLite Database

我正在嘗試使用SQLite設置Vapor 3項目。
configure.swift文件中,我具有與sqlite相關的以下設置:

try services.register(FluentSQLiteProvider())

...

// Get the root directory of the project
// I have verified that the file is present at this path
let path = DirectoryConfig.detect().workDir + "db_name.db"
let sqlite: SQLiteDatabase
do {
    sqlite = try SQLiteDatabase(storage: .file(path: path))
    print("connected") // called
} catch {
    print(error) // not called
    return
}

var databases = DatabasesConfig()
databases.add(database: sqlite, as: .sqlite)
services.register(databases)

在數據庫中,我有一個名為posts的表,我想查詢以下表並返回所有條目:

數據庫表

這是/ Sources / App / Models /中Post實現:

final class Post: Content {
    var id: Int?
    var title: String
    var body: String

    init(id: Int? = nil, title: String, body: String) {
        self.id = id
        self.title = title
        self.body = body
    }
}
extension Post: SQLiteModel, Migration, Parameter { }

我也已在configure.swift添加了遷移:

var migrations = MigrationConfig()
migrations.add(model: Post.self, database: .sqlite)
services.register(migrations)

routes.swift ,我定義了posts路線,如下所示:

router.get("posts") { req in
    return Post.query(on: req).all()
}

現在,當調用localhost:8080/posts ,我得到:

[]

我沒有正確連接數據庫嗎?
我錯過了什么嗎?

fluent生成的表名似乎與您的db表名不同,因為Fluent生成的表名與Model類名相同。 在您的情況下Post

在模型類Post添加靜態屬性entity以定義自定義表名稱。

像這樣:

public static var entity: String {
    return "posts"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM