Elimino algún recurso en una página a través de la mutación de apolo:
async delete () { await this.$apollo.mutate({ mutation: orderDelete, variables: { id: this.order.id } }) this.$emit('success') } Este es el método activado por el emisor de success :
onOrderDeleted () { this.closeModal('modalOrderDelete') this.$nextTick(() => { this.redirectToClient() }) }, redirectToClient () { this.$router.push({ name: 'clients.show', params: { clientKey: this.clientKey } }) } Esto es lo que sucede: cuando la página se redirige a los clients.show , muestra que el pedido aún se muestra incluso si lo eliminé, solo se actualiza si actualizo toda la página.
Entonces, me gustaría saber cómo activo una actualización de consulta cuando redirijo a esta página. Es probable que Apollo mantenga los datos en caché y no los actualice, no sé cómo actualizar el caché solo de esta consulta específica, pero todo programáticamente porque el usuario será redirigido a través de Vue Router.
Nota: clients.show muestra una lista de pedidos, por lo que debería actualizar los pedidos eliminando el que acabo de eliminar, pero simplemente no cambia.
this.$apollo.mutate() tiene más características de las que usaste:
El objeto se ve así:
this.$apollo.mutate({ mutation: someGql, variables: { label: param1, }, update: function(store, response) => { // how to update the store }, optimisticResponse: theResponseYouExpect, }) Entonces, enviaste el gql , pero no manejaste la respuesta de esa consulta (ni la respuesta real del servidor ni la respuesta optimista (que esperas en caso de éxito))
Más sobre la mutación Vue Apollo aquí .