Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

335
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!