2017-05-25 45 views
0

有关Firebase列表的简短问题。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')钥匙可用。

这是个什么样子,当我要求“用户”如列表所示:

正如你所看到的,关键是物体内部,而不是它($键)之外。我如何像访问这些对象一样访问这些对象,如果该键实际上是键(例如user.playlists)。

回答

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) : []