programing

파이어베이스의 컬렉션에 여러 문서를 추가하려면 어떻게 해야 합니까?

yellowcard 2023. 4. 5. 21:29
반응형

파이어베이스의 컬렉션에 여러 문서를 추가하려면 어떻게 해야 합니까?

React 네이티브 및 react-native-firebase를 사용하고 있습니다.

목표는 한 컬렉션에 여러 개의 문서(개체)를 추가하는 것입니다.현재, 다음과 같은 것이 있습니다.

const array = [
  {
     name: 'a'
  },{
    name: 'b'
  }
]
array.forEach((doc) => {
  firebase.firestore().collection('col').add(doc);
}

그러면 수집에 대해 수행된 각 업데이트에 대해 다른 장치에서 업데이트가 트리거됩니다.어떻게 하면 이 문서들을 일괄적으로 업데이트 할 수 있을까요?

다음과 같은 배치 쓰기를 생성할 수 있습니다.

var db = firebase.firestore();
var batch = db.batch()

어레이에서 업데이트 추가

array.forEach((doc) => {
  var docRef = db.collection("col").doc(); //automatically generate unique id
  batch.set(docRef, doc);
});

마침내 당신은 그것을 해야 한다.

batch.commit()

set(), update() 또는 delete() 조작의 임의의 조합을 포함하는 단일 배치로서 여러 쓰기 조작을 실행할 수 있습니다.쓰기 배지는 원자적으로 완료되며 여러 문서에 쓸 수 있습니다.

var db = firebase.firestore();
var batch = db.batch();

array.forEach((doc) => {

  batch.set(db.collection('col').doc(), doc);
}
// Commit the batch
batch.commit().then(function () {
    // ...
});

Web API 버전9는 약간 다릅니다.다음의 예를 나타냅니다.

import { writeBatch, doc } from "firebase/firestore"; 

// Get a new write batch
const batch = writeBatch(db);

// Set the value of 'NYC'
const nycRef = doc(db, "cities", "NYC");
batch.set(nycRef, {name: "New York City"});

// Update the population of 'SF'
const sfRef = doc(db, "cities", "SF");
batch.update(sfRef, {"population": 1000000});

// Delete the city 'LA'
const laRef = doc(db, "cities", "LA");
batch.delete(laRef);

// Commit the batch
await batch.commit();

데이터베이스의 배치에는 컬렉션에 새 문서를 추가하고 문서가 이미 있는 경우 오류를 발생시키는 작성 기능도 있습니다.우리는 단지 그 문서를 참조하기만 하면 된다.이 기능은 Firebase의 admin sdk에 존재합니다.

const batch = db.batch();
await users.map(async (item)=> {
    const collectionRef = await db.collection(COLLECTION_NAME).doc();
    batch.create(collectionRef, item);
  });

const result = await batch.commit();

일괄 처리된 쓰기는 최대 500개의 작업을 포함할 수 있습니다.배치의 각 작업은 Cloud Firestore 사용량에 따라 별도로 계산됩니다.

주의: 벌크 데이터 입력의 경우 병렬화된 개별 쓰기가 포함된 서버 클라이언트 라이브러리를 사용하십시오.일괄 처리된 쓰기는 직렬화된 쓰기보다 성능이 우수하지만 병렬 쓰기보다는 우수하지 않습니다.대량 데이터 작업에는 모바일/웹 SDK가 아닌 서버 클라이언트 라이브러리를 사용해야 합니다.

언급URL : https://stackoverflow.com/questions/54322153/how-to-add-multiple-docs-to-a-collection-in-firebase

반응형