如何获取Firebase数据库中push()的引用?

时间:2018-09-20 15:22:02

标签: javascript firebase web firebase-realtime-database

我想从我的Firebase数据库中检索数据。

enter image description here

在IMG 1中突出显示的一个是用户uid,在其下方是push()中的值。

这是我检索数据的代码

var getClassInfo = firebase.database().ref().child('Classes'+ user.uid + 
'/');
 getClassInfo.on('value', gotData,errData);

function gotData(data) {
//console.log(data.val());
var Classes = data.val()
var keys = Object.keys(Classes);
console.log(keys);


for (var i =0; i < keys.length; i ++){
  var k = keys[i];
  var TheClass = Classes[k].TheClass;
  console.log(TheClass);
  }
  }

function errData(err) {
console.log('Error!');
console.log(err);

 }

我如何ref()push()的值?

var getClassInfo = firebase.database().ref().child('Classes'+ user.uid + 
[push()]);

如何从特定用户[TheClass]中检索所有教室名称?

1 个答案:

答案 0 :(得分:0)

要获得通过推送创建的教室的价值,请执行以下操作,其中classId是推送创建的键(例如LMpv .....)

    firebase.database().ref('Classes/' + user.uid + '/' + classId).once('value').then(function (snapshot) {           
        console.log(snapshot.val().TheClass);
        // ....
    });

要检索特定name的所有教室user,请执行以下操作:

var userRef = firebase.database().ref().child('Classes' + '/' + user.uid);
userRef.once('value', function(snapshot) {
  snapshot.forEach(function(childSnapshot) {
    var childData = childSnapshot.val();
    var classroomName = childData.TheClass
  });
});

通过使用once()方法,您从数据库中读取了一次值,请参见https://firebase.google.com/docs/reference/js/firebase.database.Reference#once

如果您要使用on()方法(如您在问题中所做的那样)并连续收听user节点并检测何时添加新教室,请执行以下操作:

var userRef = firebase.database().ref().child('Classes' + '/' + user.uid);
userRef.on('child_added', function(data) {
  console.log(data.val().TheClass);
});

请参阅文档herehere