Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

334
Visualizações
Obtenga el primer resultado del método WatchQuery de Apollo-Client (cuando se llama con política de recuperación de caché y red)

Uso Apollo-Client para obtener datos con GraphQL.

Quiero que Apollo-Client obtenga los datos del caché y también los obtenga a través de la red (en segundo plano), para que el caché pueda actualizarse en caso de que los datos hayan cambiado. Pero quiero que Apollo-Client devuelva solo los datos almacenados en caché (aunque también obtiene los datos a través de la red) para que mi aplicación pueda continuar ejecutándose rápidamente (usando los datos almacenados en caché). (¿Cómo puedo conseguir esto?

¿Tal vez pueda usar la política de recuperación de cache-and-network ?

 const client = new ApolloClient({ uri: 'https://example.com/graphql', cache: new InMemoryCache(), defaultOptions: { query: { fetchPolicy: 'cache-and-network', }, }, });

Con esa política, no es posible usar client.query() , por lo que necesitaba cambiar a client.watchQuery() . Este método devuelve un observable del paquete zen-observable . Como es habitual con los observables, puede suscribirse a los cambios del observable. Escribí una función que, dado un cliente, ejecuta watchQuery y devuelve una promesa que contiene el primer resultado:

 export function firstWatchedQuery(aClient, options) { return new Promise((resolve, reject) => aClient.watchQuery(options).subscribe({ next: (value) => resolve(value), error: (error) => reject(error), })) }

Ahora puedo usar esta función, por ejemplo, dentro getServerSideProps() dentro de una aplicación Next.js:

 export async function getServerSideProps() { const { data } = await firstWatchedQuery(client, { query }); return { props: { objects: data.type.nodes }}; }

Pero el código no funciona como esperaba: Parece que no actualiza el caché al recargar la página. ¿Qué estoy haciendo mal?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda