es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo manejar adecuadamente la carga y los estados parciales al ejecutar una consulta GraphQL utilizando ApolloClient?

Estoy trabajando en una aplicación de backend que recopila datos de puntos finales GraphQL y estoy utilizando ApolloClient para hacerlo:

ts
const client = new ApolloClient({
uri: uri,
link: new HttpLink({ uri: uri, fetch }),
cache: new InMemoryCache({
addTypename: false,
}),
});

Cuando uso la función query:

ts
client.query({
query: query,
variables: vars,
fetchPolicy: "no-cache",
})

devuelve un objeto ApolloQueryResult:

ts
ApolloQueryResult<T> = {
data: T;
errors?: ReadonlyArray<GraphQLError>;
error?: ApolloError;
loading: boolean;
networkStatus: NetworkStatus;
partial?: boolean;
}

Mi problema es que he revisado la documentación y no dice cómo debería manejar los estados de carga y parcial. Yo no estoy usando React y tengo la impresión de que éstos solo se usan para llamadas en frontend, pero quiero estar seguro.

Lo probé y carga y parcial siempre son undefined para mí, no importa qué punto final llame.

¿Cuál es la forma correcta de manejar estos estados desde node? ¿Puede suceder que estos no sean undefined?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en JavaScript, TypeScript, GraphQL, Apollo y Apollo Client, puedo confirmar que los estados loading y partial solo son relevantes para las llamadas frontend y pueden ser ignorados con seguridad en una aplicación backend. En el objeto ApolloQueryResult, loading indica si la consulta aún está en progreso, y partial indica si se devolvió algún dato pero aún se está cargando datos adicionales. Estos estados solo son relevantes cuando se necesita actualizar una interfaz de usuario en función del estado de la consulta en una aplicación frontend.

    En una aplicación backend, se puede asumir con seguridad que la consulta está completa cuando se devuelve el objeto ApolloQueryResult, y se puede acceder a los datos en el campo data. Es poco probable que los estados partial y loading sean algo distinto a undefined en una aplicación backend.

    Por lo tanto, no es necesario preocuparse por los estados loading y partial en una aplicación backend que utiliza ApolloClient para realizar consultas de GraphQL. Simplemente acceda a los datos deseados en el campo data una vez que se haya completado la consulta.

Comments are closed.