我正在实现graphql pyramida数据模型。在这里,我有一个名为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有点陌生。因此,任何帮助将不胜感激。
谢谢
答案 0 :(得分: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层)直接暴露出来的东西: REST框架,对象URL应该是永久的)。