Development Tip

{merge : true}를 사용한 세트와 업데이트의 차이점

yourdevel 2020. 11. 9. 21:19
반응형

{merge : true}를 사용한 세트와 업데이트의 차이점


에서 클라우드 경우 FireStore 세 가지 쓰기 작업이 있습니다 :

1) 추가

2) 설정

3) 업데이트

문서에서 사용 set(object, {merge: true})하면 기존 개체와 병합됩니다.

사용할 때도 마찬가지입니다. update(object)그렇다면 차이점은 무엇입니까? Google이 논리를 복제하는 것이 이상하게 보입니다.


차이점을 이해 한 방법 :

  • set 병합하지 않으면 문서를 덮어 쓰거나 아직 존재하지 않는 경우 생성합니다.

  • set 병합을 사용하면 문서의 필드를 업데이트하거나 존재하지 않는 경우 생성합니다.

  • update 필드를 업데이트하지만 문서가 없으면 실패합니다.

  • create 문서를 만들지 만 문서가 이미 있으면 실패합니다.

set및에 제공하는 데이터의 종류에도 차이가 있습니다 update.

들어 set당신은 항상 문서 형태의 데이터를 제공해야합니다 :

set(
  {a: {b: {c: true}}},
  {merge: true}
)

와 함께 update중첩 된 값을 업데이트하기 위해 필드 경로를 사용할 수도 있습니다.

update({
  'a.b.c': true
})

"병합으로 설정"과 "업데이트"간의 또 다른 차이점 (Scarygami의 답변 확장)은 중첩 된 값으로 작업 할 때입니다.

다음과 같은 구조의 문서가있는 경우 :

 {
   "friends": {
     "friend-uid-1": true,
     "friend-uid-2": true,
   }
 }

추가하고 싶습니다 {"friend-uid-3" : true}

이것을 사용하여 :

db.collection('users').doc('random-id').set({ "friends": { "friend-uid-3": true } },{merge:true})

이 데이터가 생성됩니다.

 {
   "friends": {
     "friend-uid-1": true,
     "friend-uid-2": true,
     "friend-uid-3": true
   }
 }

그러나 update이것을 사용하여 :

db.collection('users').doc('random-id').update({ "friends": { "friend-uid-3": true } })

이 데이터가 생성됩니다.

 `{
   "friends": {
     "friend-uid-3": true
   }
 }`

참고 URL : https://stackoverflow.com/questions/46597327/difference-between-set-with-merge-true-and-update

반응형