如何使用javascript从firebase获取特定子级的所有值?

如何使用javascript从firebase获取特定子级的所有值?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,这是我的数据结构 现在我想从这个数据库中获取所有ID 在MySQL中,我可以使用这个简单的查询轻松地获得它 SELECT id From sensor_data 但在firebase,我不知道怎么做 我试过了 firebase.database().ref('/sensor_data').once('value', function( snap.forEach(function(obj){ var date = obj.val().date; var

这是我的数据结构

现在我想从这个数据库中获取所有ID

在MySQL中,我可以使用这个简单的查询轻松地获得它

SELECT id
From sensor_data
但在firebase,我不知道怎么做

我试过了

firebase.database().ref('/sensor_data').once('value', function(
    snap.forEach(function(obj){
        var date = obj.val().date;
        var time = obj.val().time;
        var id = obj.val().id;
        var ph = obj.val().ph;
        var temp = obj.val().temp;
   })
});

但它需要另一个循环来分离所需的数据

如果您知道id,您可以像这样直接查询:

firebase.database().ref(`/sensor_data/{$id}`).once('value').then(snapshot => console.log(snapshot.val(), snapshot.val().id));
如果不是这样,您确实需要获取集合,然后像之前那样迭代,或者像这样尝试:

firebase.database().ref('/sensor_data').once('value').then(data => {
  for(let record of data) {
    console.log(record.id);
  }
});

我将阅读有关在firebase中构建数据的最佳实践。例如,您的数据的结构可以是这样的:/sensor_data/{id}。因此,如果查询sensor_数据,您会立即得到一个ID列表,这些ID是包含其他信息的对象。除了Luke对数据结构的评论外,代码看起来应该可以工作。运行此代码时出现了什么问题?