javascript - 获取与特定 UID 关联的所有 firebase 数据
问题描述
我有一个有点复杂的 Firebase 设置,我想知道是否可以在一次调用中获取与特定用户关联的所有数据。
我的 Firebase 架构如下图所示:
到目前为止,我已经做了类似的事情,但我认为必须有更好的方法(比如使用 UID 获取数据而不是手动解析整个 db 对象)
export class AdminComponent {
items: FirebaseListObservable<any[]>;
private xyz: string;
private firebaseList: FirebaseListObservable<any[]>;
constructor(db: AngularFireDatabase, private router: Router, private route: ActivatedRoute) {
this.firebaseList = db.list('/');
this.items = this.firebaseList.subscribe(items => {
const dbAnalytics = items[0];
const dbBookings = items[1];
const dbClasses = items[2];
const dbLabs = items[3];
const dbMachines = items[4];
const dbPostLabs = items[5];
const dbPreLabs = items[6];
const dbUsers = items[7];
for (const key in dbUsers) {
if (dbUsers.hasOwnProperty(key)) {
const userData = dbUsers[key];
const userEid = userData['eid'];
const userFullName = userData['name'];
console.log(userEid, userFullName);
}
}
for (const key in dbPostLabs) {
if (dbPostLabs.hasOwnProperty(key)) {
const postLabData = dbPostLabs[key];
// Figure out why these objects are weird
}
}
});
}
}
所有建议表示赞赏。
解决方案
我假设您只想从数据库中获取一个对象,而不是获取所有对象,这样您就可以做这样的事情。此外,如果我能看到扩展数据的样子,回答起来会更容易。
如果您已经知道对象的 uid,则可以执行类似的操作
this.db.database.ref(`labs/${uid}`).once('value')
或者,如果您只想要其中一个对象的整个列表
this.db.list('labs/', ref => ref.orderByChild(<object key>).equalTo(<desired key value)).valueChanges();
希望这可以帮助。如果这不是您所需要的,如果数据得到扩展,我可能会再次回答得更好。
推荐阅读
- python - python turtle 名称错误:未定义形状
- swift - 领域迁移 Swift
- rust - 如何使用 Serde 的 SeqDeserializer 将序列反序列化为自定义类型?
- javascript - Chartjs 条形图平均线
- c# - 分享转换器结果
- javascript - PHP 和 React.js - 存储
- c++ - 对任何类型的元素数组进行排序
- java - 构建颤振应用程序时出错:在尝试连接到 Kotlin 守护程序时遇到异常。任务 ':app:compileDebugKotlin' 执行失败
- python - 错误:以 10 为基数的 int() 的无效文字:“”
- file - 检查文件在 UWP 中是否有只读标志