2023. 9. 5. 18:31ㆍTrip to Firebase
파이어 베이스를 처음 배우면서 스냅샷이라는 단어를 알게 되었다. 파이어 스토어에서 데이터를 부르면 바로 원본 데이터를 가져오는 것이 아니라 스냅샷을 가져온다. 잠시 찾아본 내용으로는 정확히 정의 내릴 수는 없지만 A snapshot can be defined as a system state at a specific point of time in a computer system. 위키의 정의처럼 한 특정 시점을 찍어서 가져온 것이라고 한다. 그렇다고 복사본은 아니고 사용하려면 data화를 시켜야한다.
export const findPlantDataByDocId = async (docId: string) => {
try {
if (!docId) {
errorNoti('식물 id가 잘못되었습니다.');
return;
}
const docRef = doc(db, 'plant', docId);
const plantData = (await getDoc(docRef)).data();
return plantData;
} catch (error) {
errorNoti('식물 정보를 가져오는데 실패하였습니다.');
return;
}
};
예를 들자면 이렇게 data() 메소드를 사용해서 우리가 쓸 수 있게 객체로 만들어준다. 여기서는 platnData가 스냅샷이다. 아래는 구글에서 제공하는 예시인데 보면 쿼리 스냅샷으로 나온다. 그것을 docs 메소드를 통해서 순회하고 있다. 스냅샷 상태에서 다양한 메소드를 사용할 수 있는데 이게 유용할 때도 있고 굳이 한 단계를 거쳐 데이터를 사용하기 때문에 불편할 때도 있다. 예를 들어 empty 나 size로 데이터가 존재하는지 알 수 있거나 문서 수를 size로 알 수 있어서 좋은데 그냥 data 쓸 때는 굳이 메소드를 써서 한 번 더 거쳐야한다.
쿼리 스냅샷은 그냥 쿼리로 뽑은 스냅샷이다. enumerate는 열거하다라는 뜻인데 주로 forEach를 통해서 열거를한다. 바로 쓸 수 있는 객체가 아니기에 나는 관리를 쉽게 하려고 배열에다가 넣어서 썼다.
아래 영상은 그나마 친절하게 설명해준다. 일단 요정도 알고 있는 것으로...!
https://www.youtube.com/watch?v=L6drLskHxTE&ab_channel=EyeonTech
'Trip to Firebase' 카테고리의 다른 글
파이어베이스 update 메서드 타입 에러 (0) | 2023.09.05 |
---|---|
[오늘의 이슈] 아주 쉬운 파이어베이스 Auth, 왜 로그인이 안될까? (0) | 2023.08.18 |