[英]Firebase - how to perform a where item in list query?
給定
網址根為: https : //myApp.firebaseio.com
和
數據為:
{
"users": {
"u00001": {
"name": "Andy",
"teams": {
"t001": true,
"t003": true
}
},
...
},
"teams": {
"t001": {
"name": "Alpha Team"
},
"t002": {
"name": "Beta Team"
},
"t003": {
"name": "Gamma Team"
},
...
}
}
和
Andy加入的團隊為['t001','t003']
題:
是否可以使用ONE查詢來獲取Andy加入的團隊的所有名稱? (找到所有團隊名稱,其中ID在['t001','t003']中,例如,期望[“ Alpha Team”,“ Gamma Team”])
提前致謝。
這應該工作:
var ref = new Firebase('https://myApp.firebaseio.com');
ref.child('users/u00001/teams').on('value', function(teamKeys) {
var teamNames = [];
teamKeys.forEach(function(teamKey) {
ref.child('teams').child(teamKey.key()).once('value', function(teamSnapshot) {
teamNames.push(teamSnapshot.val().name);
if (teamNames.length == teamKeys.numChildren()) {
console.log('All team names loaded');
}
});
});
})
如果您擔心加載時間和往返次數,請參閱通過使用查詢而不是重復觀察單個事件來加快獲取社交網絡應用程序的信息的速度。
var data = { "users": { "u00001": { "name": "Andy", "teams": { "t001": true, "t003": true } }, }, "teams": { "t001": { "name": "Alpha Team" }, "t002": { "name": "Beta Team" }, "t003": { "name": "Gamma Team" } } } function getNames(data, user) { var res = []; var teams = []; Object.keys(data.users).forEach(k => { if (data.users[k].name == user) { Object.keys(data.users[k].teams).forEach(t => teams.push(t)) } }); Object.keys(data.teams).forEach(t => { if (teams.indexOf(t) > -1) { res.push(data.teams[t].name); } }); return res; } document.write(JSON.stringify(getNames(data, "Andy")));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.