【问题标题】:Use Firebase-query to get data from an array of ID's使用 Firebase-query 从 ID 数组中获取数据
【发布时间】:2016-10-18 22:57:26
【问题描述】:

我正在尝试使用 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 使用新路径重新查询,然后异步处理数据?

【问题讨论】:

    标签: firebase polymer firebase-realtime-database firebase-polymer polymerfire


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      作为teamConData,我将创建一个像这样的观察者的对象

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

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

      【讨论】:

        猜你喜欢
        • 2021-03-12
        • 2020-04-04
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        相关资源
        最近更新 更多