programing

Cloud Firestore에서 컬렉션 이름 업데이트

javajsp 2023. 7. 13. 20:40

Cloud Firestore에서 컬렉션 이름 업데이트

Cloud Firestore에서 컬렉션 이름을 변경할 수 있습니까?저는 200개의 문서로 컬렉션을 만들었습니다.이제 컬렉션 이름을 변경하려고 합니다.Firebase 콘솔에서 이 작업을 수행할 방법을 찾을 수 없었습니다.

코드를 통해 또는 콘솔에서 컬렉션 이름을 변경할 수 있습니까?아니면 Firestore에서 문서를 내보내고 새 컬렉션을 만든 다음 해당 문서를 다시 가져올 수 있습니까?

제발 도와주세요.

이름이나 ID, 컬렉션 또는 문서가 존재하면 변경할 수 없습니다.효율적인 인덱스를 구축하기 위해 모든 데이터는 불변입니다.

당신은 확실히 모든 것을 읽은 다음 새로운 이름과 ID로 모든 것을 다시 넣을 수 있습니다.

로드한 다음 새 이름으로 다시 업로드할 수 있습니다.

      await FirebaseFirestore.instance
          .collection(oldCollectionName)
          .get()
          .then((QuerySnapshot snapShot) async {
        snapShot.docs.forEach((element) async {
          await FirebaseFirestore.instance
              .collection(newCollectionName)
              .doc(element.id)
              .set(element.data()as Map<String, dynamic>);
        });
      });

참고: 위의 코드는 floating을 위해 작성되었지만 변경 사항이 거의 없는 사용자에게 도움이 될 수 있습니다.

테스트 후 업데이트:이렇게 하면 하위 컬렉션이 이동하지 않습니다.

Firefoo를 사용하면 이름 바꾸기, 복제, 내보내기 등을 변경할 수 있지만 무료는 아닙니다.

여기 자바스크립트로 작성된 코드 조각이 있습니다.하위 컬렉션은 이동되지 않으며 이전 컬렉션은 삭제되지 않습니다.

const db = admin.firestore();
const oldCollRef = db.collection('oldCollectionName');
const oldCollSnap = await oldCollRef.get();
let arrayPromise = [];
oldCollSnap.forEach(async doc => {
    arrayPromise.push(new Promise(async (resolve, reject) => {
        resolve(await db.collection('newCollectionName').add(doc.data()));
    }));
})
Promise.all(arrayPromise)

언급URL : https://stackoverflow.com/questions/52251826/updating-a-collection-name-in-cloud-firestore