Angular方法以未定义而不是JSON对象的形式返回

蓝晶石

我在身份验证提供程序中有一个getUser方法(在Ionic 2中工作):

  getUser(uid: string): any {
    var toReturn;

        firebase.database().ref('/userProfile').orderByKey().equalTo(uid).once("value", function(snapshot){
          toReturn = snapshot.val();
          console.log("getUser = " + JSON.stringify(toReturn));
        });

        return toReturn;
      }

它从Firebase检索用户对象。只要存在console.log,它就可以正确输出输出,并保存在toReturn变量中。

下面是ItemDetailPage类,但是当我记录相同方法的值时,它返回未定义。

import { Component } from '@angular/core';
import { NavParams} from 'ionic-angular';
import { Auth } from '../../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');
  }

}

我是Angular的新手,并尝试学习,所以这可能是我很想念的很简单的事情。但是,为什么不返回/传递回JSON对象?我需要它来利用从数据库查询的值。

谢谢

伊塔洛·艾尔斯(Italo Ayres)

您缺少的是Firebase方法正在意外运行。因此,它确实返回了一个承诺而不是一个值。这就是为什么您将返回值作为回调获取的原因。

您应该做的是:在服务中返回Firebase Promise(如果要在将数据返回到控制器之前对数据做一些事情,则返回一个新的Firebase Promise)。然后,您想在控制器中创建一个回调函数。

return firebase.database().ref('/userProfile').orderByKey().equalTo(uid).once("value", function(snapshot){});

// Controller

_auth.getUser(this.navParams.get('item')).then(function(snapshot){
    ...
});

您应该研究诺言如何在普通javascript中工作:

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

然后如何在NG2样式中使用它们

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript:“未定义”不是对象

来自分类Dev

Angular JS Factory-未定义不是对象问题

来自分类Dev

未定义JSON对象的返回值

来自分类Dev

在Javascript中,为什么未定义对象的子键返回错误而不是未定义?

来自分类Dev

$ .each返回“未定义不是对象”

来自分类Dev

未定义的AngularJS常量不是对象

来自分类Dev

无法访问json对象属性返回未定义

来自分类Dev

返回的对象未定义

来自分类Dev

TypeError:“未定义”不是对象

来自分类Dev

Javascript:“未定义”不是对象

来自分类Dev

包含未定义的原因不是对象

来自分类Dev

返回的Javascript对象方法未定义

来自分类Dev

JSON对象返回未定义的值

来自分类Dev

方法返回未定义

来自分类Dev

对象返回未定义

来自分类Dev

未定义不是对象-Angular $ rootScope.user.userMessage

来自分类Dev

离子:错误:未定义不是对象

来自分类Dev

错误:未定义不是对象吗?

来自分类Dev

JSON对象返回未定义?

来自分类Dev

解析JSON,返回空而不是未定义

来自分类Dev

未定义不是构造函数()方法中的对象

来自分类Dev

json 对象返回未定义的 [nodejs, fs]

来自分类Dev

Ionic 2:未定义不是对象

来自分类Dev

Angular2 ngfor:未定义不是对象

来自分类Dev

JSON 对象返回未定义

来自分类Dev

将 csv 转换为 json 对象返回未定义

来自分类Dev

在 Spring Boot 中返回 Json 对象,但显示未定义

来自分类Dev

从对象返回的未定义

来自分类Dev

对 json 文件的 Angular http 请求返回未定义