我想你想要的是使用
.json
在迁移中声明字段时键入。
下面是我使用starter模板代码编写的一个示例,以供参考:
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()
}
}