我有以下創建 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 列檢索和設定資料嗎?
uj5u.com熱心網友回復:
我認為您要尋找的是.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
}
}
我宣告了兩個欄位,metadata和person.
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()
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341489.html
標籤:迅速 PostgreSQL 汽
