#vue.js #graphql #apollo
#vue.js #graphql #apollo
Вопрос:
я пытаюсь программно вызвать запрос, например:
apollo: {
listItems: {
query() {
if (this.listType == "bills") {
return gql`
{
bills {
billId
order {
orderId
customer {
customerId
billingAddress {
title
}
}
}
createdAt
}
}
`;
}
},
property
update: data => data.bills || data.bills
}
}
но когда я пытаюсь это сделать, я получаю эту ошибку:
vue.runtime.esm.js?2b0e: инвариантное нарушение 1888 года: ожидание проанализированного документа GraphQL. Возможно, вам нужно обернуть строку запроса в тег «gql»?
Я следую описанию в документах:
https://apollo.vuejs.org/guide/apollo/queries.html#reactive-query-definition
С наилучшими пожеланиями и благодарностями за помощь!
Будьте здоровы
Комментарии:
1. Импортируете ли вы gql-tag в этот компонент?
2. jep, он работает без оператора if
Ответ №1:
Вы не можете обернуть запрос apollo в if
инструкцию. Вместо этого вы можете использовать пропустить. В вашем примере это было бы так:
listItems: {
query() {
return gql`
{
bills {
billId
order {
orderId
customer {
customerId
billingAddress {
title
}
}
}
createdAt
}
}`
},
skip() {
return this.listType != "bills"
}
}
Комментарии:
1. Спасибо, это помогло! Будьте здоровы!
2. Привет! Я пытаюсь сделать то же самое, но, в отличие от него, я не хочу использовать skip, а получаю два разных результата из одного запроса. v4.apollo.vuejs.org/guide-option/… Говорит, что это возможно, но это не работает. «js apollo: { getPhotos: { query() { if (this.checked) { return { query: getPhotos, loadingKey: «загрузка», } } else { return { query: getPhotosByTag, loadingKey: «загрузка», переменные: { filterTag: this.filterTag, }, }} }, обновить: (данные) => данные.проверено, }, }, какие-нибудь советы?