suivant la documentation officielle 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"
})
Je voudrais utiliser une clé dynamique au lieu de la couleur.
db.collection("users").doc("frank").update({
"favorites[" + KEY + "].color": true
});
ce n'est bien sûr pas possible et jettera une erreur.
J'ai essayé de faire ceci:
db.collection("users").doc("frank").update({
favorites: {
[key]: {
color": true
}
}
});
En réalité, il met à jour avec la bonne clé, mais malheureusement, il écrase les autres clés (elles sont en cours de suppression).
J'ai trouvé la solution inspirée d'une solution firebase (en remplaçant "/" par ".").
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
Cette solution a fonctionné pour moi:
db.collection('users').doc('frank').update({
['favorites.' + key + '.color']: true
});
Vous pouvez mettre à jour des champs spécifiques d'objets imbriqués nommés de manière variable (comme ci-dessous).
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);