如何使用 AngularFire 从 Firebase 数据库中检索 ID
How to retrieve ID from Firebase Database using AngularFire
我的 Firebase 数据库结构如下:
fire-demo-123
- 课程
1:“课程 1”
2:“课程 2”
3:“课程 3”
-MzOn2s:“课程 4”
目前我正在使用此代码获取列表
component.ts
title = 'FirebaseDemo';
// courses: any[];
courses$;
course$;
author$;
todos$: AngularFireList<any>;
// subscription : Subscription;
constructor(public db: AngularFireDatabase) {
db.list('/course')
.valueChanges()
.subscribe((inp) => {
this.courses$ = inp;
console.log(this.courses$);
// Output is ["course1", "course2", "course3", "course4"]
});
component.html
<h3>List</h3>
<ul>
<li *ngFor="let course of courses$">{{course}}
</li>
</ul>
但是有什么方法可以参考像 {id:1,value:"course1"}...
这样的 id 来获取它们
这是我的数据库导出。
{
"course" : {
"1" : "course1",
"2" : "course2",
"3" : "course3",
"-MZOnCn1YdQ2sGLhajuL" : "course4"
}
}
我正在尝试获取带有 id 的课程。
保持你的数据库结构不变,你能做的最好的事情就是遍历所有键并创建一个新对象,如下所示:
const courses = {
"1": "course1",
"2": "course2",
"3": "course3",
"-MZOnCn1YdQ2sGLhajuL": "course4"
}
const res = []
Object.keys(courses).forEach((course) => {
res.push({id: course, value: courses[course]})
})
console.log(res);
我尝试了 运行 上面的代码并为我工作。
请确保将 courses
对象替换为来自实时数据库的快照值。
我的 Firebase 数据库结构如下:
fire-demo-123
- 课程
1:“课程 1”
2:“课程 2”
3:“课程 3”
-MzOn2s:“课程 4”
目前我正在使用此代码获取列表
component.ts
title = 'FirebaseDemo';
// courses: any[];
courses$;
course$;
author$;
todos$: AngularFireList<any>;
// subscription : Subscription;
constructor(public db: AngularFireDatabase) {
db.list('/course')
.valueChanges()
.subscribe((inp) => {
this.courses$ = inp;
console.log(this.courses$);
// Output is ["course1", "course2", "course3", "course4"]
});
component.html
<h3>List</h3>
<ul>
<li *ngFor="let course of courses$">{{course}}
</li>
</ul>
但是有什么方法可以参考像 {id:1,value:"course1"}...
这是我的数据库导出。
{
"course" : {
"1" : "course1",
"2" : "course2",
"3" : "course3",
"-MZOnCn1YdQ2sGLhajuL" : "course4"
}
}
我正在尝试获取带有 id 的课程。
保持你的数据库结构不变,你能做的最好的事情就是遍历所有键并创建一个新对象,如下所示:
const courses = {
"1": "course1",
"2": "course2",
"3": "course3",
"-MZOnCn1YdQ2sGLhajuL": "course4"
}
const res = []
Object.keys(courses).forEach((course) => {
res.push({id: course, value: courses[course]})
})
console.log(res);
我尝试了 运行 上面的代码并为我工作。
请确保将 courses
对象替换为来自实时数据库的快照值。