angularjs - Angular method returns as undefined rather than JSON object -


i have getuser method within authentication provider (working in ionic 2):

  getuser(uid: string): {     var toreturn;          firebase.database().ref('/userprofile').orderbykey().equalto(uid).once("value", function(snapshot){           toreturn = snapshot.val();           console.log("getuser = " + json.stringify(toreturn));         });          return toreturn;       } 

it retrieves user object firebase. gets output correctly console.log providing exists , saved in toreturn variable.

below itemdetailpage class when log value of same method, returns undefined.

import { component } '@angular/core'; import { navparams} 'ionic-angular'; import { auth } '../../providers/auth/auth';  @component({   templateurl: 'build/pages/item-detail/item-detail.html',   providers: [auth] }) export class itemdetailpage {   private title;   private description;   private author;    constructor(private navparams: navparams, private _auth: auth) {     this.title = this.navparams.get('item').title;     this.description = this.navparams.get('item').description;     this.author = _auth.getuser(this.navparams.get('item').author);     console.log("item-detail.ts = " + json.stringify(this.author));     //_auth.getuser('123');   }  } 

i'm new angular , trying learn go along, quite simple i'm missing out. however, why json object not returned/passed back? need utilise values queried database.

thanks

what missing firebase method running assincronously. so, return promise instead of value. that's why returned value callback.

what should is: return firebase promise in service (or new 1 in case want data before returning controller). want create callback function controller.

return firebase.database().ref('/userprofile').orderbykey().equalto(uid).once("value", function(snapshot){});  // controller  _auth.getuser(this.navparams.get('item')).then(function(snapshot){     ... }); 

you should take how promises work in plain javascript:

http://andyshora.com/promises-angularjs-explained-as-cartoon.html

and how used in ng2 style

http://coenraets.org/blog/2016/02/angular2-ionic2-data-services-promises-observables/


Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

android - Robolectric "INTERNET permission is required" -

java - Android raising EPERM (Operation not permitted) when attempting to send UDP packet after network connection -