im Anschluss an die offizielle Dokumentation von 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"
})
Ich möchte anstelle von Farbe einen dynamischen Schlüssel verwenden.
db.collection("users").doc("frank").update({
"favorites[" + KEY + "].color": true
});
dies ist natürlich nicht möglich und wirft einen Fehler aus.
Ich habe versucht, dies zu tun:
db.collection("users").doc("frank").update({
favorites: {
[key]: {
color": true
}
}
});
Es wird tatsächlich mit dem richtigen Schlüssel aktualisiert, aber leider werden die anderen Schlüssel überschrieben (sie werden gelöscht).
Ich fand die Lösung von einer Firebase-Lösung inspiriert (ersetzt "/" durch ".").
var usersUpdate = {};
usersUpdate[`favorites.${key}.color`] = true;
db.collection("users").doc("frank").update(usersUpdate);
Diese Lösung hat für mich funktioniert:
db.collection('users').doc('frank').update({
['favorites.' + key + '.color']: true
});
Sie können bestimmte Felder mit variablen (ly) benannten verschachtelten Objekten wie unten beschrieben aktualisieren.
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);