Firebase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ node ์„œ๋ฒ„์—์„œ db ์ ‘๊ทผํ•˜๊ธฐ

2024. 11. 7. 10:45ยท Firebase
๋ชฉ์ฐจ
  1. ๋ชฉํ‘œ
  2. Cloud Firestore๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ 
  3. ๋ฐ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ 
  4. ์„œ๋ฒ„์—์„œ Firestore ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (Firebase Admin SDK)

๋ชฉํ‘œ

Firebase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  express๋กœ ๊ตฌ์ถ•ํ•œ node ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•œ๋‹ค.

 

Cloud Firestore๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ 


Firebase์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด Cloud Firestore๋ผ๋Š” ์ œํ’ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

Realtime Database๊ฐ€ ๋” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ™์•„์„œ ๋ญ˜ ์„ ํƒํ•ด์•ผํ•˜์ง€? ํ–ˆ๋Š”๋ฐ ๊ณต์‹๋ฌธ์„œ(Cloud Firestore ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์— ์ž˜ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ๊ณต์‹๋ฌธ์„œ์—์„œ๋„ Cloud Firestore๋ฅผ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

 

 

 

Firebase ์ฝ˜์†”์—์„œ ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ˆ„๋ฅด๊ณ  Cloud Firestore๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค id์™€ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.

 

 

๋ณด์•ˆ๊ทœ์น™ ํƒญ์—์„œ๋Š” ํ…Œ์ŠคํŠธ๋ชจ๋“œ์—์„œ ์‹œ์ž‘์„ ์„ ํƒํ•ด ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

ํ…Œ์ŠคํŠธ๋ชจ๋“œ์—์„œ ๋งŒ๋“ค๋ฉด ๊ถŒํ•œ ์—†์ด db์— ์ฝ๊ธฐ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ 30์ผํ›„์—๋Š” ๊ถŒํ•œ์„ค์ •์„ ํ•ด์ค˜์•ผํ•˜๋Š”๋“ฏ.

 

๋ฐ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ 

์ด์ œ Firestore ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. 

ํŒŒ์ด์–ด์Šคํ† ์–ด์˜ ์ €์žฅ ๋‹จ์œ„๋Š” ๋ฌธ์„œ์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณ„์ธต๊ตฌ์กฐ์ด๊ณ  ์ฝ˜์†”์—์„œ ์•„์ฃผ ์‰ฝ๊ฒŒ ui๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 


  • ์ปฌ๋ ‰์…˜
    users
    • ๋ฌธ์„œ
      user1
      • ํ•„๋“œ
        ์ด๋ฆ„ name
        ๋‚˜์ด age
        ์ฃผ์†Œ address
    • ๋ฌธ์„œ
      user2

 

 

 

์„œ๋ฒ„์—์„œ Firestore ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (Firebase Admin SDK)

Firestore๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ๋„ ์ง์ ‘ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ณ  ์„œ๋ฒ„ API๋ฅผ ํ†ตํ•ด์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‚˜๋Š” ์„œ๋ฒ„์—์„œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์„œ๋ฒ„์—์„œ ํ•˜๊ณ ์‹ถ๊ธฐ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ Firestore๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

 

์„œ๋ฒ„์—์„œ Firestore์— ์ ‘๊ทผํ•  ๋•Œ๋Š” Firebase Admin SDK๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. Admin SDK๋Š” Firestore์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Security Rules์™€ ๊ด€๊ณ„์—†์ด ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Firebase ์„ค์น˜ ๋ฐ ์ดˆ๊ธฐํ™”

Firebase Admin SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Firebase ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”

npm install firebase-admin

 

Firestore ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ

import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();

 

Firestore์— ์ €์žฅ๋œ db ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ 

async function getAllDocuments() {
const snapshot = await db.collection('users').get();
snapshot.forEach((doc) => {
console.log(`${doc.id} =>`, doc.data());
});
}
getAllDocuments();

 

GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND ์—๋Ÿฌ

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํŒŒ์ผ์ด waterBillController.ts๋ผ๋Š” ํŒŒ์ผ์— ์žˆ๋Š”๋ฐ ํŒŒ์ผ์„ ์‹คํ–‰์‹œ์ผœ๋ณด๋‹ˆ ์•„๋ž˜์™€๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ณ  ์ฝ˜์†”์— db ๋ฐ์ดํ„ฐ๋Š” ๋ณด์ด์ง€ ์•Š์•˜๋‹ค. ใ… 

throw new Error(exports.GoogleAuthExceptionMessages.NO_PROJECT_ID_FOUND); ^ Error: Unable to detect a Project Id in the current environment. To learn more about authentication and Google APIs, visit: https://cloud.google.com/docs/authentication/getting-started at GoogleAuth.findAndCacheProjectId

 

 

์•Œ๊ณ ๋ณด๋‹ˆ Firebase Admin SDK๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ณต์‹๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์„œ๋น„์Šค๊ณ„์ • ์ธ์ฆ์ •๋ณด๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค. 

 

 

Firebase ์ฝ˜์†” > ํ”„๋กœ์ ํŠธ ์„ค์ • > ์„œ๋น„์Šค ๊ณ„์ • ํƒญ์—์„œ ์ƒˆ ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ์„ ๋ˆ„๋ฅธ๋‹ค. 

 

 

๊ฒฝ๊ณ ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋น„๊ณต๊ฐœ ํ‚ค json ํŒŒ์ผ์€ ์ ˆ๋Œ€ remote ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ๋ฉด ์•ˆ๋œ๋‹ค.

 

config/firebaseAdmin.ts ํŒŒ์ผ

import * as admin from "firebase-admin";
import * as serviceAccount from "./์„œ๋น„์Šค๊ณ„์ •ํŒŒ์ผ.json";
import { ServiceAccount } from "firebase-admin";
admin.initializeApp({
credential: admin.credential.cert(serviceAccount as ServiceAccount),
});
export const db = admin.firestore();

 

์œ„์™€ ๊ฐ™์ด ์„œ๋น„์Šค ๊ณ„์ •ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ฝ”๋“œ์—์„œ ์ง€์ •ํ•ด์„œ ์ดˆ๊ธฐํ™” ํ•ด์ค€๋‹ค.

 

 

์ด์ œ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์œ„์—์„œ ๋„ฃ์€ user1 ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ฃผ ์ž˜ ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

Refs

https://firebase.google.com/docs/firestore?hl=ko&authuser=1&_gl=1*1g7my0o*_up*MQ..*_ga*MTQ0ODE3MzQ3LjE3MzA4MTQzMjU.*_ga_CW55HF8NVT*MTczMDgxNDMyNC4xLjAuMTczMDgxNDMyNC4wLjAuMA..

 

Firestore  |  Firebase

Google Cloud ์ธํ”„๋ผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ NoSQL ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ๊ฐœ๋ฐœ ๋ฐ ์„œ๋ฒ„ ์ธก ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋™๊ธฐํ™”ํ•˜์„ธ์š”.

firebase.google.com

 

https://firebase.google.com/docs/admin/setup?hl=ko&_gl=1*1cmhwir*_up*MQ..*_ga*MTI1Mzk4MzkyOC4xNzMwODk0OTMy*_ga_CW55HF8NVT*MTczMDg5NDkzMi4xLjAuMTczMDg5NDkzMi4wLjAuMA..

 

์„œ๋ฒ„์— Firebase Admin SDK ์ถ”๊ฐ€

Admin SDK๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ Firebase์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

firebase.google.com

 

'Firebase' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Firebase API ๋ฐฐํฌํ™˜๊ฒฝ์—์„œ ์—๋Ÿฌ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ (Firestore ๋ณตํ•ฉ์ฟผ๋ฆฌ index ์„ค์ •)  (1) 2025.06.07
Firebase emulator๋กœ ํŠธ๋ฆฌ๊ฑฐ ํ•จ์ˆ˜ ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ  (1) 2025.04.28
firebase๋กœ ํ”„๋ก ํŠธ ์›น์•ฑ ๋ฐฐํฌ  (0) 2024.10.28
  1. ๋ชฉํ‘œ
  2. Cloud Firestore๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ 
  3. ๋ฐ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ 
  4. ์„œ๋ฒ„์—์„œ Firestore ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ (Firebase Admin SDK)
'Firebase' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Firebase API ๋ฐฐํฌํ™˜๊ฒฝ์—์„œ ์—๋Ÿฌ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ (Firestore ๋ณตํ•ฉ์ฟผ๋ฆฌ index ์„ค์ •)
  • Firebase emulator๋กœ ํŠธ๋ฆฌ๊ฑฐ ํ•จ์ˆ˜ ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ธฐ
  • firebase๋กœ ํ”„๋ก ํŠธ ์›น์•ฑ ๋ฐฐํฌ
hana1203
hana1203
hana1203
hana's lab ๐ŸŒฑ
hana1203
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (93) N
    • React (38)
    • JavaScript (7)
    • Firebase (4)
    • Google Cloud Platform (4) N
    • Flutter (3)
    • Python (7)
    • Computer Science (6)
    • Problem Solving (3)
    • Git (5)
    • ํšŒ๊ณ  (10)
    • Etc (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ „์ฒด
์˜ค๋Š˜
์–ด์ œ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ์˜ค๋ธ”์™„

์ตœ๊ทผ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
hana1203
Firebase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ node ์„œ๋ฒ„์—์„œ db ์ ‘๊ทผํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.