개발지식 먹는 하마 님의 블로그
[내일배움캠프 2일차] _ 개인공부(REST API, 프로젝트 9일차 - setDoc vs addDoc) 본문
[내일배움캠프 2일차] _ 개인공부(REST API, 프로젝트 9일차 - setDoc vs addDoc)
devhippo 2025. 2. 18. 20:25- REST API 관련 내용 정리를 마쳤다.
- 파이어 베이스에 대한 이해를 돕는 문서를 참고해 어제의 의문을 해결했다.
[오늘의 학습 키워드]
#REST API #FIREBASE 사용법
[학습 내용 정리]
- REST API
https://devhippo.tistory.com/58
REST API와 RESTful API
REST (REpresentational State Transfer) = 자원의 표현에 의한 상태 전달자원(데이터)을 이름으로 구분, 해당 자원의 상태(데이터 요청 시점의 자원 상태)를 주고 받는 모든 것[ 구성 요소 ]자원 : URL표현 :
devhippo.tistory.com
- 가계부 프로젝트
데이터 구조 선택 | Firestore | Firebase
4월 9~11일, Cloud Next에서 Firebase가 돌아옵니다. 지금 등록하기 의견 보내기 데이터 구조 선택 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud Firestore에서
firebase.google.com
파이어 베이스의 구조 및 사용법에 대해 잘 정리된 문서를 찾아서 읽었다.
1. 파이어 베이스에 대한 이해도를 높이고 문제없이 하위 컬렉션을 생성했다.
//유저 등록
const userDoc = doc(db, "users", name);
await setDoc(userDoc, { name, pin });
//데이터를 저장할 유저 문서의 하위 컬렉션 생성 (빈 문서)
const accountDoc = doc(collection(db, "users", name, "account"));
await setDoc(accountDoc, {});
const expenseDoc = doc(collection(db, "users", name, "expense"));
await setDoc(expenseDoc, {});
const incomeDoc = doc(collection(db, "users", name, "income"));
await setDoc(incomeDoc, {});
const transferDoc = doc(collection(db, "users", name, "transfer"));
await setDoc(transferDoc, {});
2. 로그인한 유저의 account 하위 컬렉션에 계좌명과 잔액을 저장하도록 했다.
3. 보안 및 코드 재사용을 위해 파이어 베이스를 연동하는 별도의 자바스크립트를 생성했다.
<script type = "module">
//파이어 베이스 연동 js import
import { db } from "./firebaseConfig.js";
import { collection, doc, setDoc, addDoc, getDocs } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
</script>
API를 이용해 데이터를 주고 받는 걸 하고 싶었는데 그건 파이어 베이스를
좀 더 능숙하게 사용하게 된 후에 도전해보려고 한다.
[학습하며 겪었던 문제점]
1. setDoc와 addDoc의 차이
기능 | setDoc | addDoc |
문서 ID 설정 | 직접 지정 가능 | 자동 생성 |
덮어쓰기 | 가능 | 불가 |
유저 이름으로 문서 ID를 설정하려고 하는데 addDoc을 사용했더니 오류가 발생해 조금 해맸다.
setDoc은 특정 데이터를 바로 가져오기 쉬워서 특정 키로 데이터에 접근할 때 사용하는 것이 좋다.
addDoc은 where로 검색해야 하는 대신 대량의 데이터를 추가할 때 편리하다.
[ 내일 학습 할 것 ]
- 개인소개 웹 페이지 어떻게 향상시킬지 고민 후 구현
- 나머지 인풋그룹에 버튼 연결, 데이터 저장
- 데이터 불러와서 표로 그리기!
'내일배움캠프 (CS25)' 카테고리의 다른 글
[내일배움캠프 5일차] _ 캠프(프로젝트 발표 회고) (0) | 2025.02.21 |
---|---|
[내일배움캠프 4일차] _ 캠프(개인 페이지 구현 완료, Github 웹 배포) (0) | 2025.02.20 |
[내일배움캠프 3일차] _ 캠프(자기소개 페이지 프로젝트) (1) | 2025.02.19 |
[내일배움캠프 1일차] _ 캠프공부(Git, 자기소개페이지) 개인공부(API, 프로젝트 8일차) (0) | 2025.02.17 |
내일배움캠프 - 스타터 노트 (0) | 2025.01.13 |