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

253
Views
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

over 4 years ago · Santiago Trujillo
1 answers
Answer question

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

over 4 years ago · Santiago Trujillo 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!