【问题标题】:Get an array of specific keys from Firebase using Angularfire使用 Angularfire 从 Firebase 获取特定键的数组
【发布时间】:2015-11-13 15:24:11
【问题描述】:

我有以下 Firebase 结构:

面包店列表:

firebaseio.com/bakery/:id/stuffAboutTheBakery

还有一份面包师名单:

firebaseio.com/baker/:id/bakery/bakeryId

面包师可以为多家面包店提供面包,因此在面包师详细信息中,我有一个对象列出了他们提供的所有面包店,使用面包店 ID 作为键和 true 值。

在我的应用程序中,我有一个 $firebaseObject 和一个面包师。我想获得一个包含他们服务的面包店详细信息的数组。我显然可以去每个终点,但肯定有更好的方法。所以我的问题是:

  1. 这个数据结构是文档中所说的扁平结构的意思吗?或者有没有更好的方法来构建它?
  2. 如何将多个特定面包店查询到一个数组中?

这是我当前的代码:

self.baker = $firebaseObject(firebase.baker.child($stateParams.id));

self.baker.$loaded()
  .then(function() { 
    self.bakeries = [];
      for (var bakery in self.baker.bakeries) {
        self.bakeries.push($firebaseObject(firebase.bakery.child(bakery)));
      }
    })
    .catch(function(err) {
      console.error(err);
    });

【问题讨论】:

    标签: javascript angularjs firebase angularfire


    【解决方案1】:

    Firebase 团队成员在这里。

    回答您的问题:

    1 - 这正是文档中扁平结构的意思!如果您将bakery 数据放在baker 下方,那将是不平坦的。我们建议将两者分开。

    2 - 由于您有一个对象来存储面包师的面包店 ID,因此您可以获得该面包师的所有面包店。您可以同步该对象,然后为每个面包店创建一个给定其 ID 的数组。请注意不要下载太多数据,因为它会使您的应用程序变慢。

    我最近answered a similar question clientsinvoices。这应该向您显示足够的代码来帮助您入门。

    【讨论】:

    • 非常感谢您的帮助。我实际上看到了你写的另一篇文章。我的问题是我有一个多对多的关系,所以我不能像你建议的那样分享 ID。您能否编辑如何获取链接到多个特定 ID 的对象。 (我显然知道我可以为每个请求并获得单独的 $firebaseObjects。我只是想知道是否有更好的方法。
    • 多对多我的意思是面包店可以链接到许多面包店,面包店供应许多不同的面包店。
    • 我添加了我认为必须改进的代码! :)
    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2019-07-03
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多