Angular 2 Firebase Observable to promise doesn't return anything Angular 2 Firebase Observable to promise doesn't return anything typescript typescript

Angular 2 Firebase Observable to promise doesn't return anything


The problem is that the toPromise operator converts the observable to a promise that resolves to the observable's final value. That means the observable must complete before the promise resolves.

In AngularFire2, list and object observables don't complete; they re-emit whenever the database changes.

You can solve the problem using the first operator, which takes the first emitted value and then completes the composed observable:

import 'rxjs/add/operator/first';import 'rxjs/add/operator/map';import 'rxjs/add/operator/toPromise';...return this._af.database  .list('users')  .map(users => {    let exists = false;    users.forEach(user => {      if (user.name.toLowerCase() === name.toLowerCase()) {        console.log('Name already exists!');        exists = true;      }    });    return exists;  })  .first()  .toPromise();


I solved this by unsubscribing it after the first data received lazy way :)

const userSubs$ = this.db.object(`branch/${branchId}/products`).subscribe(                     async (payload: any) => {                      userSubs$.unsubscribe();                       })

Or convert your code to something like this good way :)

 const eventref = this.db.database.ref(`branch/${branchId}/products`);  const snapshot = await eventref.once('value');  const productArray = snapshot.toJSON()  return productArray;

Happy Coding