파이어베이스의 컬렉션에 여러 문서를 추가하려면 어떻게 해야 합니까?
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
'programing' 카테고리의 다른 글
실전 가동과 개발의 검출 런타임에 대응 (0) | 2023.04.05 |
---|---|
Laravel과 함께 리액트라우터를 사용하는 방법 (0) | 2023.04.05 |
Nextjs: 정적 폴더에서 이미지를 로드할 수 없습니다. (0) | 2023.04.05 |
React Hooks useState+useEffect+이벤트가 오래된 상태를 나타냄 (0) | 2023.04.05 |
반응의 PropTypes.node와 PropTypes.any의 차이점은 무엇입니까? (0) | 2023.04.05 |