【问题标题】:Postgres jsonb data in Swift/VaporSwift/Vapor 中的 Postgres jsonb 数据
【发布时间】:2021-12-14 02:15:34
【问题描述】:

我有以下创建 jsonb 列的 Vapor Fluent 迁移

public func prepare(on database: Database) -> EventLoopFuture<Void> {
        return database.schema(MyModel.schema)
            .id()
            .field(.name, .custom("VARCHAR(255)"), .required)
            .field(.metadata, .custom("JSONB"), .required)
            .create()
    }

模型如下所示:

public final class MyModel: Model, Content {
    public static let schema = "blah"
    
    @ID(key: .id)
    public var id: UUID?
    
    @Field(key: .metadata)
    public var metadata: Data // This is obviously wrong.
}

知道如何让 Vapor 从 Postgres jsonb 列中检索和设置数据吗?

【问题讨论】:

    标签: swift postgresql vapor


    【解决方案1】:

    我认为您正在寻找的是在迁移中声明您的字段时使用 .json 类型。

    这是我使用入门模板代码整理的一个示例供参考:

    struct Person: Codable {
        let name: String
    }
    
    final class Todo: Model, Content {
        static let schema = "todos"
        
        @ID(key: .id)
        var id: UUID?
        
        @Field(key: "metadata")
        var metadata: [String: String]
        
        @Field(key: "person")
        var person: Person
    
        init() { }
    
        init(id: UUID? = nil, metadata: [String: String], person: Person) {
            self.id = id
            self.metadata = metadata
            self.person = person
        }
    }
    

    我声明了两个字段,metadataperson

    struct CreateTodo: Migration {
        func prepare(on database: Database) -> EventLoopFuture<Void> {
            return database.schema("todos")
                .id()
                .field("metadata", .json, .required)
                .field("person", .json, .required)
                .create()
        }
    
    
        func revert(on database: Database) -> EventLoopFuture<Void> {
            return database.schema("todos").delete()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 2019-08-03
      • 2018-05-19
      • 1970-01-01
      相关资源
      最近更新 更多