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
var userCollectionRef = db.collection('users'); //컬렉션을 가리키는 참조
편의상 경로 구성요소를 / 로 구분한 문자열로 문서 또는 컬렉션의 경로를 지정해 참조를 만들수도 있다. 예를 들어 alovelace 문서의 참조를 만드는 방법은 다음과 같다.
var alovelaceDocumentRef = db.doc('users/alovelace');
하위 컬렉션은 특정 문서와 관련된 컬렉션 입니다.
아래 예시는 다음 코드를 사용하여 하위 컬렉션의 메시지에 대한 참조를 만들 수 있다.
var messageRef = db.collection('rooms').doc('roomA').collection('messages').doc('message1');
npm install -s firebase
그리고 firebase를 import해서 관련된 함수를 작성하자! 설정하는 방법은 두가지가 있다.
// 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);
});