¿Cómo consultar a los hijos existentes y recorrer un Objeto para detectar si existe en Firebase usando una Función de Google Cloud?

Estoy tratando de actualizar (agregar) algunos niños en una base de datos de Firebase. En este escenario, necesito actualizar un nodo sin sobrescribir todos los nodos secundarios con Google Cloud Function usando un objeto de actualización.

Esta pregunta se deriva de esta aquí: ¿Cómo actualizar un nodo sin sobrescribir todos los nodos secundarios con Google Cloud Function usando un objeto de actualización?

Mi estructura de datos es así:

root: { 
  doors: {
    111111111111: {
       MACaddress: "111111111111",
       inRoom: "-LBMH_8KHf_N9CvLqhzU", // I will need this value for the clone's path
       ins: {
          // I am creating several "key: pair"s here, something like:
          1525104151100: true,
          1525104151183: true,
       }
    },
    222222222222: {
       MACaddress: "222222222222",
       inRoom: "-LBMH_8KHf_N9CvLqhzU", // I will need this value for the clone's path
       ins: {
          // I am creating several "key: pair"s here, something like:
          2525104157710: true,
          2525104157711: true,
       }
    }
  },
  rooms: {
    -LBMH_8KHf_N9CvLqhzU: {
      ins: {
        // I want the function to clone the same data here:
        1525104151100: true,
        1525104151183: true,
      }
    }
  }

Estoy intentando consultar los "complementos" existentes y recorrer el objeto para detectar si existe antes de agregarlos para poder agregar un sufijo a la clave en caso de que ya estén allí. Esta es mi función comió el momento.

 exports.updateBuildingsOuts = functions.database.ref('/doors/{MACaddress}').onWrite((change, context) => {
    const afterData = change.after.val(); // data after the write

    const roomPushKey = afterData.inRoom;
    const ins = afterData.ins;

    const updates = {};
    // forEach loop to update the keys individually
    Object.keys(ins).forEach(key => {
            parentPath =  ['/rooms/' + roomPushKey + '/ins/']; // defining the path where I want to check if the data exists
            // querying the "ins"
            admin.database().ref().parentPath.on('value', function(snapshot) {
                if (snapshot.hasChild(key)) {
                    updates['/rooms/' + roomPushKey + '/ins/' + key + "_a"] = true; // define 'updates' Object adding a suffix "_a"

                    return admin.database().ref().update(updates); // do the update adding the suffix "_a"

                } else {
                    updates['/rooms/' + roomPushKey + '/ins/' + key] = true; // define update Object without suffix

                    return admin.database().ref().update(updates); // do the 'updates' without suffix
                }
              });
        });   

Esta función de nube está recuperando un error:

TypeError: no se puede leer la propiedad 'on' de undefined en Object.keys.forEach.key

Estoy seguro de que me he complicado demasiado, pero no he podido encontrar una lógica más limpia para esto.

¿Tiene alguna sugerencia sobre cómo hacer esto de manera esbelta? ¿Es posible

Respuestas a la pregunta(1)

Su respuesta a la pregunta