Я только недавно начал изучать graphQL, и мне это очень интересно, но мне интересно, как это может работать, если схема может изменяться в зависимости от действий пользователя. Типы в нашем приложении могут иметь определенные пользователем атрибуты, и я читал, что динамические схемы могут быть сложными в graphQL. Есть ли решение для этого типа схемы в graphQl / Apollo.


GraphQL хорошо работает для API, в которых «форма» данных довольно четко определена. Например, в GitHub GraphQL API в репозиториях есть ссылки (теги или ветки), есть объекты GitObjects (коммиты или теги), которые все имеют довольно фиксированный набор атрибутов. Вы бы не создавали отдельное поле GraphQL для каждой ветви; вместо этого вы можете искать
query WhereIsMaster($name: String!, $owner: String!) {
repository(name: $name, owner: $owner) {
refs(refPrefix: "refs/heads/master") {
nodes {
target {
oid
}
}
}
}
}
Если вы разрабатываете свою собственную схему и у вас есть хранилище типа ключ / значение, вам придется написать свой собственный поиск для него.
type KeyValuePair implements Node {
id: ID!
key: String!
value: String!
}
type Query {
lookup(key: String!): KeyValuePair
}
type Mutation {
insert(key: String!, value: String!): KeyValuePair!
}
Если ваша модель данных действительно произвольная (в качестве яркого примера, MongoDB позволяет хранить произвольные документы JSON), то GraphQL не подходит для нее.