Firebase borra hijo con regla de seguridad! Data.existes en escritura

Tengo una regla de seguridad para añadir nuevos datos.

 "CATEGORIES": {
      "$CATEGORIES": {
      ".write":   "root.child('USERS/' + auth.uid + '/type').val() == 'admin' && !data.exists() || root.child('USERS/' + auth.uid + '/type').val() == 'admin' && root.child('MODES/delete').val() == 'yes'",
       "$DATA": {
         ".write":   "root.child('USERS/' + auth.uid + '/type').val() == 'admin'",
       }
      }
      }

Se utiliza para evitar duplicados o sobrescribir el nodo secundario con el!data.exists() regla.

El problema es que no me permite eliminar al niño con esta regla porque los datos existen. Para evitar esto agregué elroot.child('MODES/delete').val() datos que me permiten eliminarlo si lo configuro en 'sí'.

¿Cómo puedo tenerlo para no tener que hacer este trabajo alrededor? ¿Entonces no puedo tener duplicados, pero también puedo eliminar al niño si quiero?

Respuestas a la pregunta(1)

Su respuesta a la pregunta