如何在两个字段 prisma-graphql 中使用相同的生成 ID
Posted
技术标签:
【中文标题】如何在两个字段 prisma-graphql 中使用相同的生成 ID【英文标题】:How to use same generated ID in two fields prisma-graphql 【发布时间】:2019-07-23 03:51:24 【问题描述】:我正在实现一个 graphql prisma 数据模型。在这里,我有一个名为 BankAccount
的类型。我可能还需要更新和删除它们。我将其实现为不可变对象。因此,在更新时,我添加将现有记录更新为 IsDeleted 并添加新记录。并且在更新现有记录时,我需要保留上一条记录的 id 以了解更新了哪条记录。所以,我想出了一个这样的类型
type BankAccount
id: ID! @unique
parentbankAccount: String!
bankName: String!
bankAccountNo: String!
isDeleted: Boolean! @default(value: "false")
这里的parentBankAccount
保留了之前BankAccount
的id。我在考虑创建银行帐户时,将parentBankAccount
设置为与id
相同,因为它没有父级。问题是我不确定这是否可能。我对 GraphQL 有点陌生。因此,任何帮助将不胜感激。
谢谢
【问题讨论】:
【参考方案1】:在 GraphQL 中,一般如果一个对象引用另一个对象,则应该直接引用该对象;你不会嵌入它的ID。您还可以使字段为空,以支持某些关系不存在的情况。那么,对于这个特定的领域,这看起来像
type BankAccount
parentBankAccount: BankAccount
...
当帐户没有父级时,该字段将为 null
。
在 API 级别,您描述的布局似乎有点奇怪。如果我打电话
query MyBankAccount
me accounts id
我会取回一些唯一的 ID。稍后打电话给我会有点惊讶
query MyBalance($id: ID!)
node(id: $id)
... on BankAccount
name
isDeleted
balance
并发现我的帐户已被“删除”,并且余额是一周前的。
在底层数据存储中使用不可变对象是有一定意义的,尤其是出于可审计性的原因,但这往往不是您可以直接通过 GraphQL API(或大多数其他 API 层:这在对象 URL 应该是永久的 REST 框架)。
【讨论】:
以上是关于如何在两个字段 prisma-graphql 中使用相同的生成 ID的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 中使文本字段功能在 tableview 中