我正在实现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有点陌生。因此,任何帮助都将不胜感激。谢谢
发布于 2019-03-01 11:59:43
在GraphQL中,通常情况下,如果一个对象引用另一个对象,则应该直接引用该对象;您不会嵌入它的ID。您还可以使字段为空,以支持某些关系根本不存在的情况。那么,对于这个特定的字段,如下所示
type BankAccount {
parentBankAccount: BankAccount
...
}当一个帐户没有父级时,该字段将是null。
在API级别上,您描述的布局看起来有点奇怪。如果我打电话
query MyBankAccount {
me { accounts { id } }
}我会拿回一些独特的身份证。我会有点惊讶,稍后打电话
query MyBalance($id: ID!) {
node(id: $id) {
... on BankAccount {
name
isDeleted
balance
}
}
}然后发现我的账户被“删除”了,余额是一周前的。
在底层数据存储中使用不可变的对象是有意义的,特别是出于可审计的原因,但这往往不是可以通过GraphQL API直接公开的东西(或者大多数其他API层:在REST框架中,对象URL应该是永久的),这同样令人惊讶。
https://stackoverflow.com/questions/54939113
复制相似问题