[英]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.