참조
seondal - [Firebase] v9부터 크게 달라진 사용법들 모아놓기.. (살려주세요)
kyounghwan Noh - firebase v9 문법 정리
변경된 firebase v9 문법 react 에서 연습해보기
import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);
const authService = getAuth();
// import 예시
import {
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
setPersistence,
browserSessionPersistence,
} from "firebase/auth";
// 사용 예시
// setPersistence(auth, browserSessionPersistence)
// 현재의 세션이나 탭에서만 상태가 유지되며 사용자가 인증된 탭이나 창이 닫히면 삭제됨을 나타낸다. 웹 앱에만 적용됩니다.
setPersistence(auth, browserSessionPersistence)
.then(() => {
// 비밀번호 기반 계정 만들기
return signInWithEmailAndPassword(auth, id, pwd)
.then((userCredential) => {
const user = userCredential.user;
dispatch(
setUser({
user_name: user.displayName,
id: id,
user_profile: '',
uid: user.uid,
}));
history.push('/');
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
console.log(errorCode, errorMessage);
});
})
//import "firebase/firestore" 대신에
import { getFirestore } from "firebase/firestore";
//export const dbService = firebase.firestore(); 대신
export const dbService = getFirestore();
import { collection } from "firebase/firestore";
collection(dbService, "콜렉션 이름")
import { addDoc } from "firebase/firestore";
// 문법
addDoc("키를 통해 가져온 db", "payload");
// 활용
await addDoc(collection(dbService, "콜렉션 이름"), {
// 들어갈 데이터는 객체형식
text: nweet,
createdAt: Date.now(),
});
import { getDocs, query } from "firebase/firestore";
// query와 getDocs를 같이 쓰는 법
const q = await query(collection(dbService, "콜렉션 이름"));
const data = await getDocs(q);
const newData = data.docs.map(doc => ({
...doc.data()
}));
setUsers(newData);
// getDocs()만 쓸 수도 있다.
const dbSweets = await getDocs(collection(dbService, "콜렉션 이름"));
updateDoc
의 두번째 값으로 기존에 있는 key값을 넣고 value를 넣으면 기존 값이 대체되고, 없는 key와 value를 넣으면 key, value가 추가됩니다.import { updateDoc, doc } from "firebase/firestore";
const updateUser = async (id: string, age: number) => {
// 원하는 데이터 가져옴
const userDoc = doc(dbService, "콜렉션 이름", 해당 document의 id값);
try {
const res = await updateDoc(userDoc, { age: age + 1 });
console.log(res); // res는 undefined
} catch (e) {
console.log(e);
} finally {
console.log("end");
}
};
import { deleteDoc, doc } from "firebase/firestore/lite";
const deleteUser = async (id: string) => {
const userDoc = doc(db, "users", id);
try {
const res = await deleteDoc(userDoc);
console.log(res); // res는 undefined
} catch (e) {
console.log(e);
} finally {
console.log("end");
}
};