【问题标题】:How to create a foreign key with NOT NULL in Keystonejs 6?如何在 Keystonejs 6 中创建不为 NULL 的外键?
【发布时间】:2022-03-10 13:56:08
【问题描述】:

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

【问题讨论】:

    标签: node.js postgresql graphql prisma keystonejs


    【解决方案1】:

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

    有计划支持这些选项,但工作并非微不足道。例如,这些约束会影响需要执行嵌套创建的顺序。 Keystone 还需要验证配置是否有意义,例如,isNullable: false 是否存在于一对一关系的两侧(这将导致无法插入记录)。

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

    • 带有外键的列表上的validate-input 挂钩,以确保项目在创建时已链接(而不是在更新时删除)
    • validate-inputvalidate-delete 在另一个列表上挂钩,以确保在从另一侧更新或删除项目时链接不会断开。

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

    【讨论】:

      猜你喜欢
      • 2016-04-12
      • 2019-04-02
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2016-10-03
      • 1970-01-01
      相关资源
      最近更新 更多