필수 FireStore | 치트시트/튜토리얼

에서 우리는 데이터베이스의 개념을 살펴보았습니다(더 구체적으로는 noSQL).

NOTE: FIRESTORE is a DATABASE as a Service(DaaS 😅), while FIREBASE is a BACKEND as a Service(BaaS)



이 블로그에서는 프로젝트에서 firebase firestore를 사용하는 방법을 배웁니다.
UI 부분[HTML/JSX, CSS 없음]으로 뛰어들지 않고 firestore를 todo-list 웹 앱의 데이터베이스로 설정할 것입니다.

설치



시작하기 전에 가장 먼저 해야 할 일은 당연히 firebase와 firestore를 설치하는 것입니다.

2가지 방법이 있습니다.

  • 브라우저: file.html 내부에 링크로 firebase 및 firestore 추가

  • <head>
      <script src="[https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js](https://www.gstatic.com/firebasejs/8.6.1/firebase-app.js)"></script>
      <script src="[https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js](https://www.gstatic.com/firebasejs/8.6.1/firebase-firestore.js)"></script>
    </head>
    


  • 서버: npm/yarn을 통해 설치(react/node.js를 사용하는 경우)

  • // in the terminal
    npm install firebase
    
    // in a js file
    const firebase = require("firebase");
    require('firebase/auth');
    require('firebase/database');
    

    초기화



    이제 firebase를 설치했으니 클라우드에 연결(초기화)해야 합니다.

    이는 API 키 등을 프로젝트에 복사하여 수행됩니다.

    프로젝트 설정 페이지에서 모든 구성 세부 정보를 얻을 수 있습니다.



    Firebase를 초기화하려면 구성을 <script> 또는 자바스크립트 파일에 붙여넣습니다.

        const firebaseConfig = {
            apiKey: "AIzaSyBSABaeBTG4mteo-FrDtO-8qOIAxCX6yug",
            authDomain: "lucid-fireship-basics.firebaseapp.com",
            projectId: "lucid-fireship-basics",
            storageBucket: "lucid-fireship-basics.appspot.com",
            messagingSenderId: "316115989732",
            appId: "1:316115989732:web:935a8eefaca4bd9512a8f1",
            measurementId: "G-1V9QBWT3MG",
        };
    
        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
    


    이제 firestore의 인스턴스를 변수로 만들어 firestore와 상호 작용할 때마다 몇 번의 키 입력을 줄입니다😂.
    const db = firebase.firestore();
    데이터베이스로 작업을 시작하기 전에 데이터 모델(데이터가 Firestore에 저장되는 방식)을 이해해야 합니다.

    Firestore 데이터 모델



    Firestore는 데이터를 문서 모음으로 보고 모음도 하위 모음을 저장할 수 있습니다.

    "파일 탐색기"와 같이 폴더를 만들고 그 안에 문서나 폴더를 저장할 수 있습니다.

    ANALOGY:
    collections = folders
    documents = files (eg: json)





    Firestore를 사용한 CRUD 작업



    이제 어떤 형태의 데이터베이스를 다룰 때마다 기본적으로 4가지 작업을 수행할 수 있습니다.
  • 문서 만들기
  • 문서 읽기
  • 문서 업데이트
  • 문서 삭제

  • 그러나 CRUD 작업을 수행하기 전에 작업할 컬렉션을 선택해야 합니다.

    // to reduce a few keystokes to access the todos collection
    const todos = db.collection("todos")
    


    1. 문서 작성



    저장된 문서는 JSON으로 변환되므로 객체와 같은 구조를 따라야 합니다.

    NOTE: if you’ve done some python, it’s like a dictionary in python



    doc = {name:"clap this article"};
    todos.add(doc);
    
    // or
    db.collection("todos").add({name:"clap this article"});
    


    2. 문서 읽기



    2.1 컬렉션 내의 모든 문서를 신속하게 가져오기 위해.

    db.collection("todos").get().then(snapshot=>snapshot.docs.forEach(doc=>console.log(doc.data())))
    


    지금은 복잡해 보일 수 있지만 실제로는 정말 간단합니다.
  • 현재 수집 상태의 스크린샷을 찍습니다
  • .
  • 스크린샷에서 컬렉션
  • 에 저장된 문서를 추출합니다.

  • forEach는 콘솔이 모든 문서에 저장된 데이터를 기록하는 for 루프입니다.

    NOTE: => is an syntax for arrow function



  • 2.2 특정 문서를 얻기 위해.

    const docid = "sfdagerfkajilf";
    db.collection("todos").doc(docid);
    


    이제 컬렉션에 문서를 추가하면 firestore는 임의의 ID를 생성하고 이를 문서의 이름으로 사용합니다.
    특정 문서를 가져오려면 id를 지정해야 합니다.

    3. 문서 업데이트



    문서를 업데이트하는 동안 다음을 수행할 수 있습니다.

    3.1. 전체 문서 재설정

    when the document has only 1 key in the document(object), it doesn't matter which one you use



        db.collection("todos").doc("dagfshdjhkdfagsh").set({
          task1: "follow LucidMach on medium",
          task2: "share this article to everyone"
        });
    


    3.2. 문서의 일부 수정

        db.collection("todos").doc("afdghrujfkhotdf").update({
          task2: "follow LucidMach on twitter"
        });
    


    .update()를 사용할 때 문서의 지정된 부분만 변경하므로 지정되지 않은 부분은 변경되지 않습니다.

    따라서 task1은 미디엄에서 LucidMach를 따르는 것으로 유지되므로 둘 다 수행하는 것을 잊지 마세요 😜

    4. 문서 삭제



    이 작업은 문서 업데이트와 매우 유사하며 문서 ID를 지정해야 합니다.
    db.collection("todos").doc("afdghrujfkhotdf").delete()

    마지막 말



    아니, 난 죽지 않아 😜, 하지만 이 대사를 읽고 있다면,

    이 게시물을 읽는 시간에 감사드립니다. 이것이 필요할 때마다 치트 시트로 도움/역할을 하기를 바랍니다.

    ✌, 루시드마크

    나와 함께 놀자

    좋은 웹페이지 즐겨찾기