如何在 Keystonejs 6 中创建 NOT NULL 的外键?

Тим*_*ров 5 postgresql node.js graphql keystonejs prisma

我想知道如何在 Keystonejs 6 架构文件中创建 NOT NULL 的外键。我使用 postgresQl 和 ORM Prisma。我无法使用 isRequired = true 创建关系字段,这意味着 NOT NULL。有人可以解释如何在 Keystonejs 6 架构文件中的关系字段中添加 NOT NULL 吗?或许这是不可能的?

Mol*_*mby 1

是的,关系字段目前不支持validation.isRequireddb.isNullable选项。即使正在配置的列表包含外键(即多对一关系或一对一关系db.foreignKey: true),情况也是如此。

有计划支持这些选项,但工作并不简单。例如,这些约束可能会影响需要执行嵌套创建的顺序。Keystone 还需要验证配置是否有意义,例如是否具有isNullable: false一对一关系的双方(这将导致无法插入记录)。

如果您现在想模拟类似的功能,可以使用hooks。我想你需要...

  • 列表上带有外键的挂钩validate-input,以确保项目在创建时链接(并且在更新时不会删除)
  • validate-input以及validate-delete另一侧列表上的挂钩,以确保在更新或删除另一侧的项目时链接不会损坏。

由于此解决方案是在应用程序层中实现的,因此它无法为您提供像适当的数据库约束那样强有力的保证,但它是一个开始。