Me gustaría poder eliminar el campo varToDelete dentro de un mapa si ocurre una condición.
Por alguna razón, se alcanza el código para eliminarlo, pero no pasa nada.
Aquí está la estructura de mi documento:
loc [ { var1, var2, varToDelete }, { var1, var2, varToDelete } ]Entonces, comencé a pensar en este código:
await db.runTransaction(async (t) => { var locRef = db.collection('documents').doc('123-456'); var locSnapshot = await locRef.get(); var loc = locSnapshot.data().loc; loc.forEach(l => { if (typeof l.varToDelete !== 'undefined') { t.update(locRef, { "varToDelete": admin.firestore.FieldValue.delete() }); } }); });"varToDelete": admin.firestore.FieldValue.delete()Esto eliminará un campo 'varToDelete' en el propio documento. No existe un método directo para eliminar un campo de los mapas en una matriz. Debe leer el documento, eliminar esa propiedad de los objetos y actualizar el documento con toda la nueva matriz 'loc'.
const newArr = locSnapshot.data().loc.map(({varToDelete, ...rest}) => rest) t.update(locRef, {loc: newArr})