获取孩子的键/值对

时间:2019-12-19 02:30:15

标签: javascript firebase firebase-realtime-database

我正在尝试使用来自我的Firebase数据库的数据的键/值对填充地图。这是我的数据库结构:

database structure

recipes/下的最高级别字段是uID,其中的字段是各个配方ID。当我只检索当前已登录的用户数据时,这很好,因为我只读了一个级别,并且能够取出正确的键/值对。

我正在尝试检索所有食谱。如果只用单个配方ID的键/值及其值填充地图,而不必理会此处的uid字段,那将是最简单的,但是正确存储在地图中的任何内容都可以使用。但是我遇到的问题是,我似乎无法找到一种方法来动态查询uid,因为唯一已知的id是当前登录的用户。这是到目前为止我得到的:

var ref = firebase.database().ref('recipes/');
ref.on('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
        var childData = childSnapshot.val();
        var key = childSnapshot.key;
        allRecipesMap.set(key, childData);
    });
});

使用此代码,我可以获得具有两个键/值对的映射,这些键的值是用户的所有子代。我真正想要的是也分别获取每个配方的键/值对,而不仅仅是以配方为值的用户键。

1 个答案:

答案 0 :(得分:2)

  

我真正想要的是也分别获得每个配方的键/值对,而不仅仅是以配方为值的用户键

要执行此操作,则可以执行以下操作:

var ref = firebase.database().ref('recipes/');
ref.on('value', function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
        childSnapshot.forEach(function(subChildSnapshot) {
        var childData = subChildSnapshot.val();
        var key = subChildSnapshot.key;
      });
    });
});

添加另一个forEach将为您提供该食谱的所有详细信息及其ID。