Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda