【问题标题】: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.isRequired 或 db.isNullable 选项。即使配置的列表包含外键(即多对一关系或与db.foreignKey: true 的一对一关系)也是如此。
有计划支持这些选项,但工作并非微不足道。例如,这些约束会影响需要执行嵌套创建的顺序。 Keystone 还需要验证配置是否有意义,例如,isNullable: false 是否存在于一对一关系的两侧(这将导致无法插入记录)。
如果您现在想模拟类似的功能,可以使用hooks。我想你需要...
由于此解决方案是在应用层实现的,因此它不会像适当的数据库约束那样为您提供强有力的保证,但这是一个开始。