【问题标题】:Linking my Fluent model to a pre-existing database table将我的 Fluent 模型链接到预先存在的数据库表
【发布时间】:2020-05-23 01:30:39
【问题描述】:

我一直在尝试将我的 PostgreSQL 数据库链接到一个 Swift Vapor 项目,所以我创建了到它的路由。我要访问的第一个表是my_database 调用users 中的一个表。它具有属性user_id(主整数键)和created_on(带有时区的时间戳)。

我已将我的 Vapor 项目链接到 my_database,以便我可以创建新模型。但是,如果我想访问预先存在的表 users 怎么办?以下是我从文档和一些教程中拼凑出来的内容:

我的初始模型:

final class Users: Model {

static let name = "users"

typealias ID = Int
typealias Database = PostgreSQLDatabase

static let idKey: WritableKeyPath<Users, Int?> = \.user_id

var user_id: Int?
var created_on: Date
}

extension Users: Content { }

我的迁移(我认为这只是一个“空白”迁移,只是为了将项目挂在桌子上?):

struct FirstMigration: PostgreSQLMigration {
static func prepare(on conn: PostgreSQLConnection) -> EventLoopFuture<Void> {
    return conn.future()
}

static func revert(on conn: PostgreSQLConnection) -> EventLoopFuture<Void> {
    return Future<Void>.done(on: conn)
   }
}

还有我的配置:

var migrations = MigrationConfig()
migrations.add(migration: FirstMigration.self, database: .psql)
services.register(migrations)

非常感谢任何指导!

【问题讨论】:

    标签: swift postgresql vapor server-side-swift vapor-fluent


    【解决方案1】:

    您不需要迁移。您需要让您的模型确认Migration 并将模型添加为迁移或设置静态defaultDatabase 属性。那么你应该很高兴。

    PS - 我想你希望 entity 而不是 name 告诉它表名是什么。

    【讨论】:

    • 再次感谢您的帮助@0xTim(您也帮助在 Discord 上开始使用此功能!)警告:Fatal error: Error raised at top level: ⚠️ PostgreSQL Error: relation "users" already exists 请问我该如何克服?
    • 您是否尝试在任何地方创建表?你知道它会在哪一行引发错误吗?
    猜你喜欢
    • 2014-04-29
    • 2018-07-20
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多