es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una manera de vincular subcolecciones en Firestore a la colección raíz?

Tengo 2 colecciones principales que son drivers y cars. En la colección drivers, tengo documentos que representan a cada uno de los conductores. Sin embargo, cada conductor tiene una subcolección que se llama driverCars para representar cuántos coches ha registrado el conductor y todos los datos del coche que el conductor específico tiene.

Lo hice de esta manera porque es fácil consultar cuántos coches están registrados en firebase y cuántos coches ha registrado un conductor en particular. Hay más consultas que puedo utilizar para obtener datos de todos los coches y de los coches que sólo un usuario específico tiene. Actualizo ambas colecciones para cars y driverCars cuando un conductor acaba de registrar un coche usando lenguaje dart en flutter para el backend. Y si el coche ya existe en la colección cars, entonces sólo se actualiza en driverCars. Sin embargo, tengo un problema cuando quiero borrar el coche manualmente en firebase. Ya que las 2 colecciones no están vinculadas, tengo que borrar ambos documentos manualmente y creo que no es una buena aproximación.

Así que mi pregunta es, ¿existe alguna forma de evitar esto? ¿Hay alguna forma de decirle a firebase que los datos de los coches en la subcolección driverCars están vinculados a los coches y que si se elimina uno de ellos, ambos se eliminarán automáticamente… o es mi error modelar la colección de firestore de esta manera??

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de prevenir esto. Puedes utilizar las referencias de Cloud Firestore de Firebase para vincular las dos colecciones. Esto permitirá crear una referencia entre las dos colecciones, de modo que cuando se elimine un documento, el otro también se eliminará.

    Para crear una referencia, puedes utilizar el método .add() en el objeto DocumentReference. Por ejemplo, si quisieras crear una referencia entre la colección drivers y la colección cars, podrías hacer algo así:

    // Obtén una referencia a la colección de drivers
    var driversRef = firebase.firestore().collection('drivers');
    
    // Obtén una referencia a la colección de cars
    var carsRef = firebase.firestore().collection('cars');
    
    // Crea una referencia entre las dos colecciones
    driversRef.add({
      carsRef: carsRef
    });
    

    Una vez creada la referencia, puedes usar el método .delete() en el objeto DocumentReference para eliminar ambos documentos al mismo tiempo.

Comments are closed.