Estoy tratando de eliminar un campo en el elemento almacenado en caché usando el método cache.modify como se describe en la documentación oficial .
Según los documentos de la API, debo devolver el objeto centinela DELETE de la función de resolver que refleja el tipo de campo que quiero eliminar.
Lo estoy haciendo, pero el campo obligatorio aún existe en el elemento almacenado en caché después de la ejecución.
¿Como es posible? ¿Me acabo de perder algo?
Aquí está el ejemplo de código:
Tengo este artículo en el caché.
{ __typename:"Module" id:"l_14" length:223 title: "Chris Hadfield" } y quiero eliminar el campo de title , así que traté de usar cache.modify como se describe en los documentos. Así es como se ve:
client.cache.modify({ id: 'Module:l_14', fields: { title(data, { DELETE }) { return DELETE; }, }, }); Pero después de la ejecución, el elemento del Módulo apropiado en el caché no cambió. El campo de title no se había eliminado. Se ve exactamente como era antes de la ejecución:
{ __typename:"Module" id:"l_14" length:223 title: "Chris Hadfield" } Entonces, ¿por qué no se eliminó el campo de title incluso cuando repliqué todos los pasos del ejemplo de documentación?
PD: no estoy seguro de si es relevante, probablemente no, pero por si acaso: este artículo no tiene una mutación directa, etc. en el esquema BE. Es solo un objeto anidado del padre. El esquema se ve así:
type Track { id: ID! title: String! author: Author! thumbnail: String length: Int modulesCount: Int description: String numberOfViews: Int modules: [Module!]! } type Module { id: ID! title: String! length: Int }¡Gracias por cualquier ayuda!