티스토리 뷰
firebase 공식문서
https://firebase.google.com/docs/firestore?hl=ko
firebase 패키지를 설치한다.
npm i firebase --save
데이터 저장에 필요한 요소를 import 한다.
import { initializeApp } from 'firebase/app';
import { getFirestore, collection, addDoc } from 'firebase/firestore';
프로젝트를 생성하면 나오는 config 정보를 이용해서 firebaseConfig를 선언한다. 설정에서 다시 확인할 수 있다.
const firebaseConfig = {
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
appId: import.meta.env.VITE_FIREBASE_APP_ID,
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID,
};
firebaseConfig를 이용해서 파이어베이스에 접근하고 데이터베이스를 불러온다.
initializeApp(firebaseConfig);
const db = getFirestore();
저장할 데이터를 선언하고 addDoc 메소드를 이용해서 데이터를 넣는다. 컬렉션은 프로젝트를 생성하면서 사이트에서 미리 만들어뒀다.
const data = { name, email, attend, dinner, memo, createdAt: new Date() };
// await addDoc(collection(db, 내가 정한 컬렉션 이름), 데이터);
await addDoc(collection(db, 'attend-survey'), data);
전체코드
import { initializeApp } from 'firebase/app';
import { getFirestore, collection, addDoc } from 'firebase/firestore';
...
const writeData = async () => {
const firebaseConfig = {
apiKey: import.meta.env.VITE_FIREBASE_API_KEY,
authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN,
projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID,
storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET,
messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID,
appId: import.meta.env.VITE_FIREBASE_APP_ID,
measurementId: import.meta.env.VITE_FIREBASE_MEASUREMENT_ID,
};
initializeApp(firebaseConfig);
const db = getFirestore();
const data = { name, email, attend, dinner, memo, createdAt: new Date() };
await addDoc(collection(db, 'attend-survey'), data);
};
...
<Link to='/complete' onClick={() => writeData()}>
<button className='btn'>제출하기</button>
</Link>
collection에 저장되는 Doc이름을 지정해서 넣고 싶었는데 그건 찾아봐도 안나와서 자동으로 생성되는 해시에 몸을 맡겼다...⭐️ 고유한 아이디가 필요한건지 딱히 이름 지정은 안되는 것 같다.
데이터를 작성할 때 merge 옵션을 주는게 있는데 같은 이름인 Doc의 필드 데이터를 덮어씌우거나 추가하는 옵션이다.
728x90
'공부 노트' 카테고리의 다른 글
[Git] 원격 저장소에 올라간 파일 지우기 (0) | 2022.10.31 |
---|---|
[Firebase] 파이어베이스 firestore 데이터 가져오기 (0) | 2022.10.27 |
[Vite] Vite 프로젝트 gh-pages로 배포하기 (0) | 2022.10.21 |
[Recoil] Recoil 시작하기 (0) | 2022.10.06 |
[React] 부모 컴포넌트에서 자식 컴포넌트 state 조작하기, useImperativeHandle (0) | 2022.10.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 비주얼스튜디오코드
- CSS
- 회고
- 구름에듀
- 김버그
- git
- scss
- 파이썬
- 제로초
- 코드잇
- 저스트코드
- Til
- TS
- React
- 제이쿼리
- vue
- 스파르타코딩클럽
- 깃
- javascript
- js
- 리액트
- vscode
- 자바스크립트
- map
- 드림코딩
- 코딩앙마
- Python
- 타입스크립트
- Typescript
- html
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함