我的Firebase结构位于
之下 {
"Test1 Lab" : {
"Equipment" : "3-D printer",
"Hours" : "7AM-6PM",
"Location" : "Library",
"Name" : "Digital Lab"
},
"Test2 Lab" : {
"Equipment" : "Oculus",
"Hours" : "7AM-6PM",
"Location" : "Hall",
"Name" : "Test Lab"
}
}
顶层称为" makerpace"。我正在尝试获取位置为"图书馆"的项目的名称,设备和小时数。我运行了代码:
var red = database.ref('makerspace');
return red.orderByChild('Location').equalTo("Library").once('value').then(function(snapshot){
console.log(snapshot.child("makerspace").child("Name").key);
});
我得到"姓名"。但是,当我将.key更改为.val()时,我应该期待得到" Digital Lab",但我得到null。我不知道如何解决这个问题。
答案 0 :(得分:0)
快照已经在makerspace
节点上,因此它应该是:
var red = database.ref('makerspace');
return red.orderByChild('Location').equalTo("Library").once('value').then(function(snapshot){
console.log(snapshot.child("Name").val());
});
答案 1 :(得分:0)
试试这个
var red = database.ref('makerspace');
return red.orderByChild('Location').equalTo("Library").once('value').then(function(snapshot){
snapshot.forEach(function(data) {
console.log(data.val());
});
});
答案 2 :(得分:0)
我建议访问这样的快照数据,
red.orderByChild('Location').equalTo("Library").once('value').then(function(snapshot){
console.log(snapshot.val()); <==========
// result would be
{ "Test1 Lab" : { "Equipment" : "3-D printer","Hours" : "7AM-6PM","Location" : "Library","Name" : "Digital Lab" } }
}
要获取可以执行的属性,
snapshot.val()['Test1 Lab']['Name'] or snapshot.val()['Test1 Lab'].Name
snapshot.val()['Test1 Lab']['Hours']
现在你可以使用Object.keys(snapshot.val())[0]
获得'Test1 Lab'snapshot.val()与JSON Object类似,因此只需像访问对象一样访问其属性。无需使用child()方法来访问数据。