【问题标题】:Firebase Lists vs ObjectsFirebase 列表与对象
【发布时间】:2017-05-25 04:23:10
【问题描述】:

关于 Firebase 列表的快速问题。

我正在尝试访问多个列表以遍历单个对象中的列表。对象如下所示:

user : {
    playlists: {}, // List 1
    joined: {},    // List 2
    favorites: {}  // List 3
}

现在我知道我可以通过执行三个单独的请求来访问所有三个列表,例如:

firebase.list('user/playlists');
firebase.list('user/joined');
firebase.list('user/favorites');

但我正在尝试清理我的代码并通过以下方式完成所有操作:

firebase.list('user');

然后访问它在用户内部返回的所有列表。唯一的问题是,列表没有返回键,它只是说“对象”。当我使用firebase.object('user') 时,密钥可用。

这是当我请求“用户”作为列表时的样子:

如您所见,密钥位于对象内部而不是外部($key)。如果密钥实际上是密钥(例如 user.playlists),我该如何访问这些对象。

【问题讨论】:

    标签: javascript json firebase firebase-realtime-database angularfire2


    【解决方案1】:

    对于任何感兴趣的人,我想通了。我使用.map() 将部分对象转换为数组。

    getPlaylist(_playlistId: string, _query: Object = {}) {
    
      return this._database.object(`playlists/${_playlistId}`, _query).map(
    
          result => {
    
            return {
              info: result.info,
              leader: result.leader,
              favorites: (result.favorites) ? Object.values(result.favorites) : [],
              followers: (result.followers) ? Object.values(result.followers) : [],
              songs: (result.songs) ? Object.values(result.songs) : []
            };
    
          }
    
        );
      }
    

    例如,收藏夹是一个我想作为列表返回的对象:

     Check if exists      If exists, map obj to array     else assign to empty array
    (result.favorites) ? Object.values(result.favorites) : []
    

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 2021-10-21
      • 1970-01-01
      • 2012-05-09
      • 2017-03-13
      • 1970-01-01
      • 2021-05-25
      • 2017-11-08
      • 1970-01-01
      相关资源
      最近更新 更多