2017-11-14 87 views
5

następujące oficjalnej dokumentacji FireStore:Chmura Firestore: Pola Update w zagnieżdżonych obiektów z dynamicznym kluczem

{ 
    name: "Frank", 
    favorites: { food: "Pizza", color: "Blue", subject: "recess" }, 
    age: 12 
} 

// To update favorite color: 
db.collection("users").doc("frank").update({ 
    "favorites.color": "Red" 
}) 

Chciałbym użyć dynamicznego klucza zamiast koloru.

db.collection("users").doc("frank").update({ 
    "favorites[" + KEY + "].color": true 
}); 

nie jest to oczywiście możliwe i spowoduje błąd.

Próbowałem to zrobić:

db.collection("users").doc("frank").update({ 
    favorites: { 
     [key]: { 
      color": true 
     } 
    } 
}); 

To jest rzeczywiście z aktualizacją prawy klawisz ale niestety, jest nadpisanie innych klawiszy (są one usunięte).

Odpowiedz

6

Znalazłem rozwiązanie inspirowane rozwiązaniem opartym na bazie firebase (zastępując "/" przez ".").

var usersUpdate = {}; 
usersUpdate[`favorites.${key}.color`] = true; 

db.collection("users").doc("frank").update(usersUpdate); 
+0

pokrewne doc -> https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0#update_fields_in_nested_objects –