javascript - functions - Cloud Firestore: actualiza campos en objetos anidados con clave dinámica
firestore firebase (3)
A continuación la documentación oficial de firestore:
{
name: "Frank",
favorites: { food: "Pizza", color: "Blue", subject: "recess" },
age: 12
}
// To update favorite color:
db.collection("users").doc("frank").update({
"favorites.color": "Red"
})
Me gustaría usar una clave dinámica en lugar de color.
db.collection("users").doc("frank").update({
"favorites[" + KEY + "].color": true
});
Esto, por supuesto, no es posible y arrojará un error.
He estado tratando de hacer esto:
db.collection("users").doc("frank").update({
favorites: {
[key]: {
color": true
}
}
});
En realidad se está actualizando con la clave correcta, pero desafortunadamente, se está sobrescribiendo las otras claves (se están eliminando).
Encontré la solución inspirada en una solución de base de fuego (reemplazando "/" por ".").
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
Esta solución funcionó para mí:
db.collection(''users'').doc(''frank'').update({
[''favorites.'' + key + ''.color'']: true
});
Puede actualizar campos específicos de la variable (ly) nombrados objetos anidados como a continuación.
ref.set({
name: "Frank",
favorites: { food: "Pizza", quantity: 2 }
});
//now the relevant update code
var name = "favorites";
var qty = 111;
var update = {};
update[name+".quantity"] = qty;
ref.update(update);