snapshot.val()返回undefined

时间:2016-10-04 16:20:18

标签: angular firebase firebase-realtime-database

我很难通过Firebase获取对象列表。这段代码(在我的服务中)非常简单,没有神秘感。

getObjs () {
  firebase.database ().ref ('obj')
    .once ('value', function (snapshot) {
      console.log (snapshot.val()); // this logs every object I ask for.
      return snapshot.val();        // this does not return nothing.
    });
}

它要求Firebase检索对象列表。该函数返回snapshot,这是查询的结果,但是这里有一个奇怪的部分,当我调用console.log (snapshot.val())时,我得到每个对象,但是当我尝试使用{返回相同的值时{1}},我的组件中什么都没有。

以防万一,这是组件中的功能:

return snapshot.val()

我还尝试在生命周期钩子中运行同一行代码(构造函数中的代码),但是我得到了一个无限循环并且崩溃了应用程序。

我用这种方式更新了代码,服务:

constructor (private os) {
  this.objs = this.os.getObjs ();
}

组件:

getObjs () {
  return firebase.database ().ref ('obj')
    .once ('value', function (snapshot) {
      return snapshot.val();
    });
}

使用this.os.getObjs () .then (data => { this.objs = data; console.log (this.objs); }); ,我得到console.log (this.objs);的日志,我绝对不知道如何处理它。我尝试(不成功)将我认为可观察的内容转换为JSON。

0 个答案:

没有答案