【问题标题】:How to retrieve ID from Firebase Database using AngularFire如何使用 AngularFire 从 Firebase 数据库中检索 ID
【发布时间】:2021-04-29 04:54:49
【问题描述】:

我的 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 获取课程。

【问题讨论】:

  • 你能分享一个数据库导出,以便我们可以克隆我们这边的问题吗? JSON的一个小例子
  • 感谢您的回复,我已经编辑了问题。
  • 我已经发布了答案。让我知道这是否是你要找的。您可以通过单击对勾图标接受答案,以便其他人知道问题已解决,否则请随时提出更多问题。

标签: angular firebase google-cloud-firestore angularfire2


【解决方案1】:

保持数据库结构不变,最好的办法是遍历所有键并创建一个新对象,如下所示:

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 对象替换为实时数据库中的快照值。

【讨论】:

  • @KartikDolas 请阅读我答案的最后一行,用快照替换它。
  • @KartikDolas 你也可以使用db.object() 代替db.list() 吗?
  • 我在 Firebase 中完全是菜鸟。请参考我在 TS 中的代码,让我知道在我的情况下什么是快照。我正在尝试使用 db.object('course').snapshotChanges() 和 db.object('course')。如果我错了,请纠正我。
  • “inp”应该是快照。您能否在现有代码和 console.log(inp) 中使用 db.object() 而不是 .list() 并在此处分享?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 2016-12-02
  • 2018-11-17
  • 2023-03-24
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多