如何在 Vapor 3 中保存具有特定 ID 的模型

How to save a model with a specific id in Vapor 3

我正在尝试向迁移中的 table 添加一些种子数据。对于这个table我不希望自动生成id值,而是想为每条记录手动设置。如何才能做到这一点?我当前的代码如下所示,但是记录没有插入到数据库中,迁移运行时也没有抛出错误。

型号class:

import Foundation
import FluentPostgreSQL
import Vapor

final class PropertyType: PostgreSQLModel {
    var id: Int?
    var name: String

    init(id: Int, name: String) {
        self.id = id
        self.name = name
    }
}

extension PropertyType: Migration { }
extension PropertyType: Content { }
extension PropertyType: Parameter { }

迁移class:

import FluentPostgreSQL
import Vapor

struct AddPropertyTypes: Migration {
    typealias Database = PostgreSQLDatabase

    static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
        let propertyType1 = PropertyType(id: 1, name: "Einfamilienhaus")
        return propertyType.save(on: conn).transform(to: ())
    }

    static func revert(on conn: PostgreSQLConnection) -> Future<Void> {
        let futures = [1].map { id in
            return CodePropertyType.query(on: conn).filter(\CodePropertyType.id == id)
                .delete()
        }
        return futures.flatten(on: conn)
    }
}

只需更换

propertyType.save(on: conn)

propertyType.create(on: conn)