Определение реактивного запроса с помощью Apollo и Vuejs

#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, }, }} }, обновить: (данные) => данные.проверено, }, }, какие-нибудь советы?