firebase) create / update / set method의 차이점

김명성·2023년 1월 13일
0

create / update / set의 차이점

Set

set(data, options) 메서드를 사용하면 document를 만들며, 해당 document가 존재하지 않을 경우에는 새로운 document를 만들어 저장합니다.
두번째 인자로 들어가는 옵션 객체에는 merge값을 입력할 수 있는데요, boolean값을 주어 첫번째 인자로 들어가는 data로 전체 document를 덮어 쓸지, 아니면 해당하는 필드값만 업데이트 할지 결정할 수 있습니다.

document foo{ banana:'green', isRipe: false }라는 값이 들어있습니다.
이제 이 값을 바꿔보겠습니다.

ref.doc('foo').set({ banana: 'yellow' },{ merge: true })

set을 사용할 때 옵션의 mergetrue로 주면 document를 data로 덮어 씌우는게 아니고, 필드 값을 업데이트하기에 document foo{ banana:'yellow', isRipe: false }가 됩니다.
다시 바꾸어 보겠습니다.

ref.doc('foo').set({ banana:'yellow' })

merge를 사용하지 않았기에 data로 document를 덮어 씌우게 되었고,
document foo{ banana:'yellow' }가 됩니다.


Update

update 메서드는 set 메서드의 merge: true가 적용된 것과 같은 기능을 합니다.
하지만 set과 다르게 새롭게 document를 생성하지 않고, 참조하려는 docRef가 존재하지 않을 경우 실패하게 됩니다.


Create

create 메서드는 문서를 생성하고, 생성하려는 docRef에 이미 문서가 존재하는 경우 실패하게 됩니다.


set이 포괄적인데 왜 Create , Update 함수가 존재할까요?

set 메서드가 나오기 이전에 Create,Update 함수가 존재했었고 많이 쓰였기에 레거시로서 삭제하지 않은 것 같습니다.

0개의 댓글