티스토리 뷰

firebase 공식문서

https://firebase.google.com/docs/firestore?hl=ko 

 

Firestore  |  Firebase

유연하고 확장 가능한 NoSQL 클라우드 데이터베이스를 사용해 클라이언트 측 개발 및 서버 측 개발에 사용되는 데이터를 저장하고 동기화하세요.

firebase.google.com

 

 

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함