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

182
Visualizações
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 Respostas
Responde à pergunta

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