gpt4 book ai didi

swift - 使用 Vapor 框架建立数据库连接

转载 作者:可可西里 更新时间:2023-11-01 00:29:41 25 4
gpt4 key购买 nike

我正在尝试使用 Swift 构建 API,并且我选择使用 Vapor。

我已经创建了一个 SQLite 数据库,并且能够使用数据库客户端连接到它。

现在我希望我的 Swift Vapor 项目也使用 FluentSQLite 包连接到它。

我已经在项目的根文件夹中创建了我的数据库:

/Users/rutgerhuijsmans/Documents/runk-3.0

我的数据库叫做 runk-3.0-database

文件夹看起来像这样:

enter image description here

我尝试使用以下配置连接到我的数据库:

import FluentSQLite
import Vapor

/// Called before your application initializes.
public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws {
/// Register providers first
try services.register(FluentSQLiteProvider())

/// Register routes to the router
let router = EngineRouter.default()
try routes(router)
services.register(router, as: Router.self)

/// Register middleware
var middlewares = MiddlewareConfig() // Create _empty_ middleware config
/// middlewares.use(FileMiddleware.self) // Serves files from `Public/` directory
middlewares.use(ErrorMiddleware.self) // Catches errors and converts to HTTP response
services.register(middlewares)

let sqlite: SQLiteDatabase?
do {
sqlite = try SQLiteDatabase(storage: .file(path: "runk-3.0-database"))
print("data base connected") // This gets printed

/// Register the configured SQLite database to the database config.
var databases = DatabasesConfig()
databases.add(database: sqlite!, as: .sqlite)
services.register(databases)

/// Configure migrations
var migrations = MigrationConfig()
migrations.add(model: User.self, database: .sqlite)
services.register(migrations)
} catch {
print("couldn't connect") // This doesn't get printed
}
}

我做错了什么?

最佳答案

正如 IMike17 所解释的,您的代码只是将新的数据库文件创建到 Build/Products/Debug 或 release 文件夹中。您必须动态设置完整路径,如下所示:

do {
let directory = DirectoryConfig.detect()
let filePath = directory.workDir + "runk-3.0-database"
sqlite = try SQLiteDatabase(storage: .file(path: filePath))
......

关于swift - 使用 Vapor 框架建立数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52549270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com