Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

294
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!