蒸气流利不会违反外键约束

问题描述 投票:2回答:1

当我使用create将模型添加到数据库时,当违反其中一个外键时,Vapor fluent不会引发异常。也未插入,create函数将正常返回。

这是蒸气流利的标准行为吗?

我在PostgreSQL上使用Vapor 3。

这是我添加外键约束的迁移:

struct AddAddressForeignKeys: Migration {
    typealias Database = PostgreSQLDatabase

    static func prepare(on conn: PostgreSQLConnection) -> Future<Void> {
        return PostgreSQLDatabase.update(Address.self, on: conn) { builder in
            builder.reference(from: \.regionId, to: \CodeRegion.id)
            builder.reference(from: \.countryId, to: \CodeCountry.id)
        }
    }

    static func revert(on conn: PostgreSQLConnection) -> Future<Void> {
        return PostgreSQLDatabase.update(Address.self, on: conn) { builder in
            builder.deleteReference(from: \.regionId, to: \CodeRegion.id)
            builder.deleteReference(from: \.countryId, to: \CodeCountry.id)
        }
    }
}

更新:我已经添加了JacobRelkin的答案中提到的enableReferences,但是仍然没有抛出异常。高>

// Configure database
let config = PostgreSQLDatabaseConfig(hostname: "localhost", port: 5432, username: "postgres", database: "test", password: nil, transport: .cleartext)
let postgres = PostgreSQLDatabase(config: config)

// Register the configured database to the database config.
var databases = DatabasesConfig()
databases.add(database: postgres, as: .psql)
databases.enableReferences(on: .psql)
services.register(databases)

当我使用create将模型添加到数据库时,当违反其中一个外键时,Vapor fluent不会引发异常。它也没有插入,创建函数只是返回为...

swift vapor
1个回答
1
投票

为了强制违反外键,设置时必须在enableReferences(on:)上调用enableReferences(on:)

© www.soinside.com 2019 - 2024. All rights reserved.