0

我正在尝试使用 Polymerfire 的 firebase-query 来检索数组中每个 ID 的子项列表。我有一个数组,其中包含三个 ID 和一个 firebase 查询,如下所示:

<firebase-query id="teamContacts"
                path= "{{teamConPath}}"
                data="{{teamConData}}"></firebase-query>

和几个看起来像这样的观察者:

teamConData: {
  observer: '_teamConDataChanged'
},
teamConPath: {
  value: '',
  observer: '_teamConPathChanged'
},

_teamConPathChanged: function(newValue, oldValue) {
  var self = this;
  if (!app.isEmpty(newValue)) {
    this.$.teamContacts.getStoredValue(newValue).then((response) => {
      // self.teamConData = value;
      console.log('in the gsv then');
    });
    console.log('teamConData: ', this.teamConData);
  }
},
_teamConDataChanged: function(newValue, oldValue) {
  console.log('teamConChanged', newValue);
},

最初的路径teamContacts为空。设置路径后,我不明白如何获取和使用数据。Firebase 文档显示了一个名为的方法getStoredValue(),但该方法似乎不存在于 Github 上的 firebase-query 源中。我认为设置一条新路径会获取数据并触发数据的观察者,但情况似乎并非如此。如何让 firebase-query 使用新路径重新查询,然后异步处理数据?

4

2 回答 2

0

我根本不知道 firebase,但快速浏览一下文档意味着它返回了获得价值的承诺。因此,在您console.logteamConData 尚未解决的地方(即尚未获取数据)。添加注释//self.teamConData的位置是查询应该填充 teamData 的位置。当您使用 ES6 箭头函数时,该this值应该是正确的 - 所以this.teamConData此时应该有数据。

于 2016-10-09T07:24:56.590 回答
0

因为teamConData它是一个对象,所以我将创建一个像这样的观察者

observers: ['_teamConDataObserver(teamConData.*)'],
_teamConDataObserver: function(changedData) {
    // do something with the data
}

我会建议你看看这个多播,它可能会有所帮助https://youtu.be/m1hFhDYDY6o?t=4m35s

于 2016-10-18T14:57:26.340 回答