В 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 объектадолжен быть постоянным).