Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

302
Visualizações
¿Cómo mover una colección/datos existentes en Firestore a una subcolección?

En mi base de datos de Firestore, tengo el siguiente esquema de base de datos con documentos

 root | |---transactions/...

Quiero mover todas las transacciones a una nueva subcolección como:

 root | |---users/user/transactions/...

¿Cómo logro esto?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de probar algunos enfoques (ver más abajo), esto es lo que funcionó para mí:

1. Migre los datos con una función personalizada utilizando @angular/fire SDK:

 // firebase.service.ts import { Injectable } from '@angular/core'; import { AngularFirestore } from '@angular/fire/firestore'; import { first, map } from 'rxjs/operators'; @Injectable({ providedIn: 'root', }) export class FirebaseService { fromCollection = '<name-of-collection>'; toCollection = '<other-root-level-collection>/<document-id>/<subcollection>'; constructor(private firestore: AngularFirestore) {} migrateTransactions() { this.getAllDocuments<YourType>(this.fromCollection).subscribe((documents) => { documents.forEach(async (document) => { await this.createDocument(this.toCollection, document); }); }); } getAllDocuments<T>(path: string) { return this.firestore .collection(path) .get() .pipe( first(), map((collection) => collection.docs.map((doc) => doc.data() as T)) ); } createDocument(path: string, document: unknown) { return this.firestore.collection(path).add(document); } }

Nota: Esto solo AGREGA todos los documentos desde el origen a la colección de destino; NO elimina los documentos originales ni sobrescribe ningún documento existente, por lo que es muy seguro de usar. Luego, puede eliminar la colección de origen en la consola de Firebase.

Recuerde que puede concatenar colecciones y documentos anidados y pasarlos como argumento a AngularFirestore.collection(path) (como se ve en la propiedad toCollection ). Esto facilita el recorrido de colecciones anidadas. Si esto es posible en otros SDK, no lo sé.

2. Migrar usando firestore-migrator por Jeff Delaney :

Esto no funcionó para mí ya que la biblioteca falló al convertir las marcas de tiempo de firebase. Si no tiene tipos de datos complejos en su esquema, probablemente funcionará. La biblioteca en sí es una gran utilidad y se puede hacer que funcione localmente si está dispuesto a jugar un poco.

3. Migre mediante el servicio de exportación e importación administrado de Cloud Firestore :

Esto solo funciona para copias de seguridad completas de la base de datos completa o de una colección de nivel raíz. Así que esto podría no ser lo que estás buscando.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda