프로젝트 만들기
프로젝트 이름 지정
프로젝트 생성 완료
프로젝트 생성 완료
왼쪽 메뉴 -> 빌드 -> Firestore Database 클릭
데이터베이스 만들기
데이터베이스 만들기
데이터베이스 생성 완료
컬렉션 생성
데이터 추가하기
프로젝트 개요 클릭
앱 등록
터미널에서 Firebase 설치 -> Firebase SDK 추가
.env.local 파일 생성 후, 개인 key 저장
src 폴더 -> firebase.js
import { initializeApp } from 'firebase/app'
import { getFirestore } from 'firebase/firestore'
console.log(process.env.REACT_APP_FIREBASE_API_KEY)
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
appId: process.env.REACT_APP_FIREBASE_WEB_APP_ID,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,
}
// Firebase 초기화
const app = initializeApp(firebaseConfig)
// Firebase 객체 저장
export const db = getFirestore(app)
import React, { useEffect } from 'react'
import { db } from './firebase'
const App = () => {
useEffect(() => {
console.log(db)
}
return <div></div>
}
export default App
firebase에서 데이터를 받아올 때 아래와 같은 에러 메시지가 뜨는 경우가 발생할 수 있습니다.
import { db } from './firebase'
import { collection, getDocs } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
useEffect(() => {
async function getFruits() {
const data = await getDocs(fruitCollection)
console.log(data)
}
getFruits()
}, [])
return <div></div>
}
export default App
import { db } from './firebase'
import { getDoc, doc } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
useEffect(() => {
async function getFruits() {
const docRef = doc(fruitCollection, "수박")
const 데이터 = await getDoc(docRef)
if (data.exists()) {
console.log('결과 : ', 데이터.data())
} else {
console.log('결과 없음')
}
}
}, [])
return <div></div>
}
export default App
import { db } from './firebase'
import { query, where } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
useEffect(() => {
async function getFruits() {
const data = query(fruitCollection, where("season", "==", "가을"))
const querySnapshot = await getDocs(data)
querySnapshot.forEach(doc => {
console.log(doc.id, " : ", doc.data())
})
}
}, [])
return <div></div>
}
export default App
import { db } from './firebase'
import { query, where } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
useEffect(() => {
async function getFruits() {
const data = query(fruitCollection, where("price", ">", 9000))
const querySnapshot = await getDocs(data)
querySnapshot.forEach(doc => {
console.log(doc.id, " : ", doc.data())
})
}
}, [])
return <div></div>
}
export default App
import { db } from './firebase'
import { doc, setDoc } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
async function setFruit() {
await setDoc(doc(fruitCollection, "바나나"), {
season: "봄",
color: "노랑",
taste: "달콤",
price: 3000,
})
}
return (<div>
<button onClick={setFruit}>과일 추가</button>
</div>)
}
export default App
import { db } from './firebase'
import { doc, updateDoc } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
async function updateFruit() {
await updateDoc(doc(fruitCollection, "바나나"), {
season: "봄",
color: "노랑",
taste: "달콤",
price: 5000, // 3000 -> 5000
})
}
return (<div>
<button onClick={updateFruit}>과일 수정</button>
</div>)
}
export default App
import { db } from './firebase'
import { doc, updateDoc } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
async function updateFruit2() {
await updateDoc(doc(fruitCollection, "바나나"), {
season: "봄",
color: "노랑",
taste: "달콤",
price: 5000,
count: 10, // 기존 데이터에 추가
})
}
return (<div>
<button onClick={updateFruit2}>과일 수정2</button>
</div>)
}
export default App
import { db } from './firebase'
import { doc, deleteDoc } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
async function deleteFruit() {
await deleteDoc(doc(fruitCollection, "메론"))
}
return (<div>
<button onClick={deleteFruit}>과일 삭제</button>
</div>)
}
export default App
import { db } from './firebase'
import { doc, updateDoc, deleteField } from 'firebase/firestore'
const App = () => {
const fruitCollection = collection(db, "fruits")
async function deleteFieldFruit() {
await updateDoc(doc(fruitCollection, "바나나"), {
count: deleteField(), // count 삭제
})
}
return (<div>
<button onClick={deleteFieldFruit}>특정 필드 삭제</button>
</div>)
}
export default App
과일 정보 입력 -> DB추가
과일 정보 사이트