setDoc()을 사용하여 Firebase V9 Firestore 업데이트 문서 데이터

Firebase 버전 9 Cloud Firestore에서 기존 문서를 업데이트하는 데 사용할 수 있는 두 가지 방법이 있습니다.

  • setDoc() → 현재 위치
  • updateDoc()

  • 참고: 더 진행하기 전에 세 가지 작업을 수행해야 합니다.
  • Create A Firebase Project from Firebase Console
  • Register an app for Web --JavaScript
  • Add Firebase SDK to JavaScript Web App

  • setDoc() 메서드를 사용하여 다음을 업데이트할 수 있습니다.

  • Entire existing document 또는

  • Specific document field Firestore 데이터베이스에 있습니다.

  • 그 외에도 setDoc() 메서드를 사용할 수도 있습니다add a brand new document to a collection.

    Firestore 업데이트 전체 문서



    다음은 Cloud Firestore에 저장된 샘플 데이터입니다.



    setDoc() 메서드를 사용하여 전체 문서를 업데이트해 보겠습니다.

    setDoc() 메서드를 사용하여 데이터를 완전히 업데이트하려면 세 가지 메서드가 필요합니다.

  • getDatabase() → 문서를 업데이트하려는 위치.

  • doc() → 여기서 데이터베이스 참조, 업데이트하려는 문서의 컬렉션 및 ID를 전달합니다.

  • setDoc() → doc() 메서드와 함께 교체하려는 새 데이터를 실제로 전달하는 위치.

  • Firestore 데이터베이스를 가져오고 필요한 세 가지 방법을 해체합니다.

    import { getFirestore, doc, setDoc } from "firebase/firestore";
    


    Firestore 데이터베이스 초기화:

    const db = getFirestore(app);
    


    Doc() 메서드



    setDoc() 메서드의 첫 번째 인수는 doc() 메서드입니다.

    이 doc() 메서드는 세 개의 인수를 사용합니다.

  • 데이터베이스 → DB

  • 컬렉션 이름 → 도시

  • 문서 ID → p4eZc05QV43InigxALJ(문서 ID – 위 스크린샷 참조)

  • doc() 메서드를 호출하고 데이터베이스 참조(db), 컬렉션 이름(cities) 및 문서 ID(p4eZc05QV43InigxALJ)를 전달합니다.

    docRef라는 상수에 할당합니다.

    const docRef = doc(db, "cities", "p4eZc05QV43InigxALJ");
    


    문서 데이터 {}



    setDoc() 메서드의 두 번째 인수는 도시 컬렉션 내에서 완전히 기존 문서를 업데이트하려는 실제 데이터입니다.

    As you can see the new data has complete different than the existing document data in the Firestore database including the field name.



    const data = {
      title: "Vancouver",
      provinceName: "British Columbia",
      countryCode: "CA"
    };
    


    문서를 업데이트하기 위한 SetDoc() 쿼리



    이제 setDoc() 메서드를 성공적으로 사용하기 위해 필요한 두 가지 인수가 있습니다.

    setDoc() 메서드를 호출하고 docRef 및 데이터를 인수로 전달합니다.

    import { getFirestore, doc, setDoc } from "firebase/firestore";
    
    // Your Firebase SDK Initialization code here
    
    const db = getFirestore(app);
    
    const docRef = doc(db, "cities", "p4eZc05QV43InigxALJ");
    
    const data = {
      title: "Vancouver",
      provinceName: "British Columbia",
      countryCode: "CA"
    };
    
    setDoc(docRef, data)
    .then(docRef => {
        console.log("Entire Document has been updated successfully");
    })
    .catch(error => {
        console.log(error);
    })
    


    setDoc() 쿼리 실행…

    그리고 기존 문서가 필드 이름을 포함하여 도시 컬렉션 내에서 완전히 업데이트된 것을 볼 수 있습니다.



    기존 ID로 setDoc() 메서드를 사용하면 전체 문서 데이터가 삭제되고 새로 제공되는 데이터로 교체됩니다.

    Firestore 업데이트 문서 필드



    기존 문서에서 특정 필드의 값만 업데이트하려는 경우에는 어떻게 해야 합니까?

    이를 위해 setDoc() 메서드에 세 번째 인수를 추가하기만 하면 됩니다.

    단일 속성을 가진 JavaScript 개체가 됩니다.

    병합:참

    import { getFirestore, doc, setDoc } from "firebase/firestore";
    ...
    setDoc(docRef, data, { merge:true })
    .then(docRef => {
        console.log("Document Field has been updated successfully);
    })
    .catch(error => {
        console.log(error);
    })
    


    merge:true를 추가하면 setDoc() 메서드에는 다음과 같은 4가지 중요한 동작이 있습니다.
  • 데이터 개체가 비어 있는 경우 merge:true가 설정되면 쿼리가 Firestore 문서에서 아무 작업도 수행하지 않습니다.
  • 데이터 개체에 Firestore 문서와 정확히 일치하는 기존 필드 이름 및 값이 있는 경우 쿼리는 아무 작업도 수행하지 않습니다.
  • 데이터 개체에 새 값이 있는 기존 필드 이름이 있는 경우 쿼리는 Firestore 문서에서 해당 필드의 값을 업데이트합니다.
  • 데이터 객체에 Firestore 문서에 존재하지 않는 값을 가진 필드 이름이 있는 경우 쿼리는 해당 필드를 문서에 추가합니다.
  • 좋은 웹페이지 즐겨찾기