Búsqueda de sitios web

typescript - Firestore actualizar valor en mapa de mapas


Intento agregar valores a un mapa de mapas usando funciones en la nube y Firestore. Los mapas podrían no existir y no puede haber una entrada con la clave personID.

En este momento estoy logrando esto con el siguiente código:

if (!userData!.requests){
    userData["requests"] = {};
}
if (!userData!.requests.outgoing){
    userData!.requests["outgoing"] = {};
}

userData!.requests.outgoing[`${personID}`] = data;
t.update(usersRef, userData!);

¿Hay una manera más fácil de hacer esto? ¿Y hay una manera sin necesidad de leer los datos primero?

Respuesta #1

Si solo tienes mapas, deberías poder usar la notación de puntos para escribir/actualizar un campo anidado:

usersRef.update({
    ["requests.outgoing."+personID]: data
})

Si tienes un array en alguna parte del camino hacia los datos, esto no funcionará. Solo puedes agregar o eliminar elementos en un array sin leerlos; actualizar cualquier elemento existente del array requiere un ciclo de leer-actualizar-escribir.