Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Algunos campos no se guardan en firestore usando ionic

Me enfrento a un problema, cuando trato de guardar mis datos en firebase, algunos de los campos no se guardan, mientras que tengo los valores correctos en la consola.

Estoy tratando de almacenar un objeto de comida que tiene la identificación y el nombre del usuario actual como atributo y los valores del formulario, para los valores del formulario está bien, pero no para los datos del usuario actual.

Aquí está mi función: food.service.ts

 private foodCollection: AngularFirestoreCollection<FoodView>; ... addFood(food: FoodView) { this.loadingService.present(); let foodToAdd: FoodView = food; this.authService.getUserData().subscribe((u) => { foodToAdd.cookerName = u.displayName; foodToAdd.cookerId = u.uid; }); console.log(foodToAdd); return this.foodCollection.add(foodToAdd).then(() => this.loadingService.dismiss());}

La función donde está la consulta: de AngularFireStoreCollection

 /** * Add data to a collection reference. * * Note: Data operation methods are done on the reference not the query. This means * when you update data it is not updating data to the window of your query unless * the data fits the criteria of the query. */ add(data: T): Promise<DocumentReference<T>>;

aquí es donde se usa mi función: add-food.page.ts

 addFood() { this.setFood(); this.foodService.addFood(this.food).then(() =>{ this.presentAlert(); this.tagList = []; this.ingredientList = []; this.addFoodForm.reset(); } ); }

mi servicio de autenticación donde obtengo datos de usuario:

 getUserData() { return this.afs.doc<User>(`users/${this.getUserId()}`).valueChanges(); }

esta es mi salida en la consola para mi objeto de comida antes de intentar almacenarlo en firebase: Salida de objeto de comida antes de guardar

Y este es el mismo objeto en firebase pero sin la información necesaria: campo faltante

Como puede ver, los campos cookerName y cookerId no están disponibles.

Estoy usando Ionic 5 con Angular 11.

Cómo puedo arreglarlo ?

Gracias por tu ayuda

Editar:

Finalmente resolví esto, el problema estaba en mi servicio de carga que tiene una función asíncrona (presentar y descartar), al eliminar this.loadingService.present() y this.loadingService.dismiss() funciona bien

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Solución

Para resolver este problema, eliminé la función de la clase LoadingService . Como eran asincrónicos, la devolución de llamada de Firebase con el valor de comida actualizado correcto se realizó antes de que se actualizara el valor de comida.

He cambiado esto esto:

 addFood(food: FoodView) { this.loadingService.present(); let foodToAdd: FoodView = food; this.authService.getUserData().subscribe((u) => { foodToAdd.cookerName = u.displayName; foodToAdd.cookerId = u.uid; }); console.log(foodToAdd); return this.foodCollection.add(foodToAdd).then(() => this.loadingService.dismiss());}

para esto:

 async addFood(food: FoodView) { this.authService.getUserData().subscribe((u) => { food.cookerName = u.displayName; food.cookerId = u.uid; }); return this.foodCollection.add(food); }

y funciona bastante bien, solo tengo que cambiar como funciona mi servicio de carga

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda