返回的对象:
ref.orderByChild('name').once('value').then(function(snapshot){
var results = snapshot.val();
当我记录结果时,图像就是我得到的,我一直试图为三个对象,网络钓鱼,信息和技术中的每一个访问“活动”的值。
这是我的第一个JS应用程序抱歉,如果它很容易但无法找到其他有用的答案。
答案 0 :(得分:2)
有两种(常见的)方法:Firebase方式和常规JavaScript方式。
由于您似乎正在返回节点列表,因此我将从Firebase方式开始。
ref.orderByChild('name').once('value').then(function(snapshot){
var actives = {};
snapshot.forEach(function(childSnapshot) {
var result = childSnapshot.val();
var key = result.key;
var active = result.active;
actives[key] = active;
}
console.log(actives);
}
所以我们在这里使用Firebase的Snapshot.forEach()
方法循环子节点。
或者,您可以像现在一样获取整个快照的值,并使用普通的旧JavaScript来获得所需的结果。 Jatin's answer显示了一种方法,但这是另一种方式:
ref.orderByChild('name').once('value').then(function(snapshot){
var results = snapshot.val();
var keys = Object.keys(results); // ["information", "phishing", "techniques"]
var actives = {};
keys.forEach(function(key) {
actives[key] = results[key].active;
});
console.log(actives);
}
因此,在这种情况下,我们使用Object.keys()
来获取子节点名称,然后使用JavaScript Array.forEach()
循环遍历该数组。
答案 1 :(得分:1)
var snapshot = {
"information" : {
"active" : "y",
"name" : "information"
},
"phishing" : {
"active" : "z",
"name" : "phishing"
},
"techniques" : {
"active" : "x",
"name" : "techniques"
},
};
console.log(snapshot.information.active);
console.log(snapshot.phishing.active);
console.log(snapshot.techniques.active);