본문 바로가기
01_PROJECT/OBJECT _2023

[ Firebase ] getAuth(app)와 getFirestore(app)는 전역에 쓸까, 지역에 쓸

by zestlumen 2023. 8. 1.

1. 전역

const firebaseConfig = {
	...
};
const app = initializeApp(firebaseConfig);

const auth = getAuth(app);
const db = getFirestore(app);

 

전역에서 사용하는 경우, Firestore 인스턴스를 한번만 얻어와서 모든 컴포넌트 또는 함수에 사용한다.

인스턴스를 여러 번 생성하지 않고 하나의 인스턴스를 재사용하여 성능을 최적화할 수 있고,

여러 곳에서 Firestore에 접근해야 할 경우 반복된 코드를 쓰지 않기에 코드를 간결하게 할 수 있다.

 

 

 

2. 지역

각 컴포넌트나 함수 내에서 필요한 시점에 Firestore 인스턴스를 얻어온다.

프로젝트의 구조를 모듈화하여 관리하고자 할 때 유용하다.

 

어떤 방법을 선택하더라도 Firebase SDK는 인스턴스를 캐싱하여 중복 호출의 비용을 최소화하고,

이미 초기화된 인스턴스가 있는 경우에 캐시된 인스턴스를 반환한다고 한다.

여러 번 호출되어도 내부적으로는 초기화가 한 번만 수행되고 캐싱된 인스턴스를 반환하기에

매번 새로운 인스턴스를 생성하지 않고 기존 인스턴스를 반환하기에 성능상 큰 차이는 없다고 한다.

 

 

그래서 일반 이메일 로그인하는 함수와 구글로그인을 하는 함수에서

auth 객체를 필요로 하기 때문에 getAuth()로 객체를 얻는 부분은 전역에 두었고

 

 

 

getFirestore(app)는 멤버쉽을 체크하는 함수에서만 쓰이기 때문에

지역에서 db객체를 얻어오게 했다.