Firebase의 구조

Jeon seong jin·2020년 2월 9일
3

Firebase

목록 보기
1/2

Firestore의 구조 -Col -Doc

firestore는 Collection과 Document 2가지

  • Collection은 문서의 집합

  • Document는 필드와 값을 가지며, 또 다른 Collection을 갖게됨

  • Firestore는 NoSQL문서 중심의 데이터베이스 SQL데이터베이스와 달리 테이블이나 행이 없으며, 컬렉션으로 정의되는 문서에 데이터를 저장

  • 각 문서에는 키-값 쌍이 들어있다.작은 문서가 많이 모인 컬렉션을 저장하는 데 최적화되어 있다.

문서

Firestore의 저장소 단위는 문서이다. 문서는 값에 매핑되는 필드를 포함하는 간단한 레코드 이며 각 문서는 이름으로 식별된다.

alovelace(문서)

first : "Ada"
last : "Lovelace"
born : 1815

문서의 복잡한 중첩 개체를 맵이라고 한다. 예를 들어 위의 예시에서 사용자 이름을 다음과 같이 맵으로 구조화 할 수 있습니다.

 alovelace

name :
    first : "Ada"
    last : "Lovelace"
born : 1815

컬렉션

  • 문서는 컬렉션에 저장되며, 컬렉션은 단순히 문서의 컨테이너이다. 컬렉션은 오로지 문서만 포함한다.
user(컬렉션)

class alovelace

first : "Ada"
last : "Lovelace"
born : 1815

class aturing

first : "Alan"
last : "Turing"
born : 1912

참조

  • Firestore의 모든 문서는 데이터베이스 내에서 위치에 따라 고유하게 식별된다. 앞의 예시에 나왔던 alovelace 문서는 사용자 컬렉션에 속한다. 코드에서 이 위치를 참조하려면 위치를 가리키는 참조를 만든다.
var userCollectionRef = db.collection('users'); //컬렉션을 가리키는 참조

편의상 경로 구성요소를 / 로 구분한 문자열로 문서 또는 컬렉션의 경로를 지정해 참조를 만들수도 있다. 예를 들어 alovelace 문서의 참조를 만드는 방법은 다음과 같다.

var alovelaceDocumentRef = db.doc('users/alovelace');

하위 컬렉션

하위 컬렉션은 특정 문서와 관련된 컬렉션 입니다.
아래 예시는 다음 코드를 사용하여 하위 컬렉션의 메시지에 대한 참조를 만들 수 있다.

var messageRef = db.collection('rooms').doc('roomA').collection('messages').doc('message1');

리액트 & 파이어베이스

  • 파이어베이스의 기능들(db,사용자 인증)을 사용하려면 파이어베이스 자바스크립트 코드를 가져와야 합니다. npm firebase 를 통해서 npm 파이어베이스 모듈을 설치해줍니다.
 npm install -s firebase

그리고 firebase를 import해서 관련된 함수를 작성하자! 설정하는 방법은 두가지가 있다.

  1. index.js 파일에서 바로 import&config 코드를 적능 방법
  2. 별도의 Firebase.js 파일을 생성해서 파이어베이서 설정 코드를 담은 후 import해서 사용하는 방법.
    2번째 방법이 더 유지보수하기 편하다!
  • 파이어베이스 콘솔로 접속한 후 파이어베이스 추가하기를 클릭해서 코드 스니펫을 복사해와서 config 부분을 수정한 후 별도의 js파일에 작성한다.
// src/firebase.js 파일 내용물

import * as firebase from "firebase/app";
// firebase/app에서 받아오는 모든 메소드를 firebase라는 이름으로 쓸거야!

import "firebase/firestore";

const config = {
  apiKey: "asdasdasd",
  authDomain: "asdasdasd,
  databaseURL: "asdasd",
  projectId: "asdasd",
  storageBucket: "asdasd",
  messagingSenderId: "asdasd",
  appId: "asdasd",
  measurementId: "asdasdasd"
};
firebase.initializeApp(config);

export const db = firebase.firestore();
// db라는 이름으로 export 해서 사용할거야!

내가 작업한 파일에서 firbase의 데이터를 import를 해보자!

import React, { useState, useEffect } from "react";
import { db } from "../../firebase";

// code...

var docRef = db.collection("left_seat").doc("wecoder_6");
// 내가 만든 컬렉션과 도큐먼트 이름을 괄호 안에 넣는다.

  docRef
    .get()
    .then(function(doc) {
      if (doc.exists) {
        console.log("Document data: ", doc.data());
      } else {
        console.log("No such document!");
      }
    })
    .catch(function(err) {
      console.log("Error getting document", err);
    });
profile
-기록일지

0개의 댓글