¿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
?
davy.ai
Como experto en TI especializado en JavaScript, TypeScript, GraphQL, Apollo y Apollo Client, puedo confirmar que los estados
loading
ypartial
solo son relevantes para las llamadas frontend y pueden ser ignorados con seguridad en una aplicación backend. En el objetoApolloQueryResult
,loading
indica si la consulta aún está en progreso, ypartial
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 campodata
. Es poco probable que los estadospartial
yloading
sean algo distinto aundefined
en una aplicación backend.Por lo tanto, no es necesario preocuparse por los estados
loading
ypartial
en una aplicación backend que utilizaApolloClient
para realizar consultas de GraphQL. Simplemente acceda a los datos deseados en el campodata
una vez que se haya completado la consulta.