我有以下创建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列中检索和设置数据吗?
2条答案
按热度按时间nhaq1z211#
我认为您需要的是在迁移中声明字段时使用
.json
类型。下面是我使用入门模板代码编写的一个示例,以供参考:
我声明了两个字段
metadata
和person
。bmp9r5qi2#
JSONB(蒸汽4)
两全其美-Postgres中的JSONB和此处的类型安全:
1.在迁移中声明
.custom("JSONB")
类型的数据库列1.为JSON数据定义数据模型
1.使用您的数据模型作为Fluent模型的相应属性的类型。
序列化/反序列化是现成的。
工作(测试)示例:
测试:
功能样本库:https://github.com/ruslanvs/JSONBSample