2017-11-14 1 views
5

중첩 된 객체에 업데이트 필드 :클라우드 경우 FireStore : 경우 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" 
}) 

내가 대신 색상의 동적 키를 사용하고 싶습니다.

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

물론 이것은 오류가됩니다.

나는이 작업을 수행하기 위해 노력했습니다 :

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

그것은 실제로 오른쪽 키와 함께 업데이트되어 있지만 불행하게도, 그것은 (이 삭제되는) 다른 키를 덮어 쓰기한다.

답변

6

파이어베이스 솔루션에서 영감을받은 해결책을 발견했습니다 ("/"를 "."로 대체).

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

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

관련 문서 -> https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0#update_fields_in_nested_objects –

관련 문제