113. Exporting Services

npm create vue@latest


여기서는 Firebase 구성을 리팩토링하고 서비스를 내보내는 방법을 다룰 것입니다.
이미 Firebase의 인증 서비스를 사용하고 있지만, 이 서비스는 사용자의 이메일과 비밀번호 외에 추가 정보를 저장하지 않습니다.
사용자의 나이, 국가, 이름과 같은 정보를 저장하려면 Firebase의 다른 서비스인 Firestore를 사용해야 합니다.
Firestore는 Firebase의 공식 데이터베이스 서비스입니다.

Firebase SDK는 Firestore API와 상호작용하기 위한 모듈을 포함하고 있습니다.
데이터베이스와 상호작용하는 함수들은 패키지를 가져오는 것으로 활성화할 수 있습니다.
Firebase 파일을 열어 인증 패키지뿐만 아니라 Firestore 패키지도 가져와야 합니다.
중요한 것은 Firestore 패키지를 가져와야 하며, 구버전 데이터베이스 서비스인 실시간 데이터베이스용 데이터베이스 패키지를 가져오면 안됩니다.

Firebase 객체는 패키지를 변수에 할당하지 않고도 확장됩니다.
코드를 리팩토링하기 위해, 등록 양식 컴포넌트로 전환하고, 등록 함수에서 Firebase의 인증 서비스에 접근하기 위해 firebase.auth() 함수를 반복적으로 호출하는 대신, 서비스에 대한 참조를 생성합니다.
Firestore에 대해서도 마찬가지입니다.
Firebase 파일로 돌아가서 인증 및 Firestore 서비스에 대해 참조를 생성하고 내보냅니다.
이렇게 하면 어떤 컴포넌트도 서비스에 접근하기 위해 참조를 직접 생성할 필요가 없습니다.

마지막으로, 기본 객체 대신 명명된 내보내기를 사용하고, 등록 양식 컴포넌트의 가져오기 문을 업데이트하여 리팩토링을 완료합니다.
이렇게 하면 코드가 더 읽기 쉬워집니다.
다음엔 사용자 정보를 저장하는 방법을 계속 다룰 예정입니다.

src/includes/firebase.ts
import { initializeApp } from 'firebase/app'
import { getAuth } from 'firebase/auth'
import { getFirestore } from 'firebase/firestore'

const firebaseConfig = {
  apiKey: 'AIzaSyA4X8qu0cS5CeKS9sExbwWgTP4mW9crP84',
  authDomain: 'vue-guide-2.firebaseapp.com',
  projectId: 'vue-guide-2',
  storageBucket: 'vue-guide-2.appspot.com',
  // messagingSenderId: '475228612189',
  appId: '1:475228612189:web:ff548967df307e9a110fb4'
}

initializeApp(firebaseConfig)
const auth = getAuth()
const db = getFirestore()

export { auth, db }