Я использую react-apollo
в своем кандидате на реагирование и не могу понять, как реализовать схему на стороне клиента.
У меня есть ниже определение типа:
export const alertTypeDefs = gql`
type Query {
alert: Alert
}
type Alert {
message: String!
type: String!
duration: Int!
}
`;
Он определяет Query
, который возвращает alert
объект.
Ниже приведен код, который я хочу использовать для этого запроса.
const cache = new InMemoryCache();
export const createClient = () => {
return new ApolloClient({
cache,
typeDefs: [alertTypeDefs]
});
};
Сначала я инициализировал экземпляр ApolloClient
с кэш-памятью и определенным выше alertTypeDefs
. Ниже приведен код для выполнения запроса:
const client = createClient();
const data = client.readQuery({query: gql`
{
alert @client
}
`});
console.log('data:', data);
Но я получил эту ошибку Missing selection set for object of type Alert returned for query field alert
при запуске readQuery
на экземпляре клиента. Похоже, что Alert
не определено. Но я уже определил запрос Alert
в typeDefs
. Это работает нормально, если я изменю код запроса ниже, который я должен указать, что должно быть возвращено внутри { message }
. Но, похоже, не использует схему. Я ожидаю, что мне не нужно указывать возвращаемые поля, если он возвращает все поля в объекте схемы. Я неправильно понимаю схему?
const data = client.readQuery({query: gql`
{
alert @client {
message
}
}
`});
console.log('data:', data);
Если я должен указать возвращаемые поля одно за другим, какой смысл определять схему?