首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在prisma-graphql两个字段中使用相同的生成ID

如何在prisma-graphql两个字段中使用相同的生成ID
EN

Stack Overflow用户
提问于 2019-03-01 06:30:01
回答 1查看 327关注 0票数 0

我正在实现graphql prisma数据模型。这里我有一个名为BankAccount的类型。我可能也需要更新和删除它们。我将其实现为不可变对象。因此,在更新时,我将现有记录添加为IsDeleted,并添加一个新记录。在更新现有记录时,我需要保留上一条记录的id,以知道更新了哪条记录。所以,我想出了这样一种类型

代码语言:javascript
复制
type BankAccount {
  id: ID! @unique
  parentbankAccount: String!
  bankName: String!
  bankAccountNo: String!
  isDeleted: Boolean! @default(value: "false")
}

在这里,parentBankAccount保存上一个BankAccountid。我在考虑在创建银行账户时,将parentBankAccount设置为与id相同,因为它没有父帐户。问题是我不确定这是否可能。我对GraphQL有点陌生。因此,任何帮助都将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-01 11:59:43

在GraphQL中,通常情况下,如果一个对象引用另一个对象,则应该直接引用该对象;您不会嵌入它的ID。您还可以使字段为空,以支持某些关系根本不存在的情况。那么,对于这个特定的字段,如下所示

代码语言:javascript
复制
type BankAccount {
  parentBankAccount: BankAccount
  ...
}

当一个帐户没有父级时,该字段将是null

在API级别上,您描述的布局看起来有点奇怪。如果我打电话

代码语言:javascript
复制
query MyBankAccount {
  me { accounts { id } }
}

我会拿回一些独特的身份证。我会有点惊讶,稍后打电话

代码语言:javascript
复制
query MyBalance($id: ID!) {
  node(id: $id) {
    ... on BankAccount {
      name
      isDeleted
      balance
    }
  }
}

然后发现我的账户被“删除”了,余额是一周前的。

在底层数据存储中使用不可变的对象是有意义的,特别是出于可审计的原因,但这往往不是可以通过GraphQL API直接公开的东西(或者大多数其他API层:在REST框架中,对象URL应该是永久的),这同样令人惊讶。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54939113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档