Я использую graphql-tag
, поэтому я собираюсь использовать этот синтаксис.
Допустим, у меня есть этот запрос:
const query = gql`
query user(id: String) {
user(id: $id) {
id
}
}
`
Какой лучший шаблон для повторного использования этого жезапросить узел документа, если при другом вызове я хочу поля username
и email
в дополнение к id
без необходимости переписывать весь запрос снова, например:
const query = gql`
query user(id: String) {
user(id: $id) {
id
username
email
}
}
`
Я использую react-apollo
на веб-интерфейсе, если это делает вещи более интересными.
Редактировать:
Просто чтобы прояснить ... что-то вроде этого
const userIdFrag = gql`
fragment UserId on User {
id
}
`
const fullUserFrag = gql`
fragment FullUser on User {
id
username
email
}
`
const generateQuery = (documentNode) => {
return gql`
query user(id: String) {
user(id: $id) {
...documentNode
}
}
${documentNode}
`
}
const idQuery = generateQuery(userIdFrag);
const fullUserQuery = generateQuery(fullUserFrag);
(Выше работает, но даетмне ошибки от graphql в консоли, что заставляет меня поверить, что это не то, что я должен делать)