【问题标题】:How to get the latest updated data from firebase?如何从 firebase 获取最新的更新数据?
【发布时间】:2020-05-17 22:41:21
【问题描述】:

如何从 firebase 获取最新更新的节点 上图链接中的示例:

  1. DATA & SECOND_DATA 包含相同的节点对象。 [像这样的多个节点] 实际应用中大约有 8 个节点。
  2. 所有 对象都可以更新,即data1, data2, data3。 . .从两个节点。
  3. 所有节点的对象属性(名称、密码)都相同,只是值发生了变化。 我需要获取更新的最新节点。 IE。如果 DATA.data3 已更新,然后下一个 DATA.data2 在 firebase 中更新。我如何获得该特定数据的最新值。那是DATA.data1,然后是下一个DATA.data3
  4. 图片只是一个例子。数据库名称是一些示例。在实际应用中 some-sample 也是一个节点。 IE。 some-sample 也是父节点,DATA 和 SECOND_DATA 是 some-sample 的子节点。

这些值将在每次 firebase 时在 Angularjs div 中更新 最新数据已更新。 i,e 如果它会在 DATA 信息中发生变化 如果在 SECOND_DATA 中更改,则将在 DATA div 中更改 angular 中的信息将在 SECOND_DATA div

中更改

仅供参考:我是 Firebase 和 Angular 的新手。找不到这些。一个例子会非常感谢。

【问题讨论】:

    标签: javascript angular firebase firebase-realtime-database angular5


    【解决方案1】:

    Firebase 云函数可以在这种情况下为您提供帮助。

    您需要将触发器放在可能发生更改的所需路径上。

    export const onUpdate = functions.database.ref('some-samples/{firstId}/{secondId}').onUpdate(event => {
        let firstId = event.params.firstId;
        let secondId = event.params.secondId;
        let data = event.data.val();
        ...
    });
    

    您可以在这里执行一些可以由服务器处理的任务,而不是在客户端执行。即使客户端处于非活动状态,也会执行任务。

    【讨论】:

      【解决方案2】:

      在最新版本的firebase(7.14.4)中不需要使用其他方法来获取最新更新的数据。

      只需通过snapshotChanges()方法从firebase获取数据

      crud.service.ts

      import { Injectable } from '@angular/core';
      import { AngularFirestore } from '@angular/fire/firestore';
      
      @Injectable({
          providedIn: 'root'
      })
      
      export class CrudService {
          constructor(private firestore: AngularFirestore) { }
        
          //get data from firebase
          getFFList() {
            return this.firestore.collection('ff_list').snapshotChanges();
          }
       }

      并使用

      从组件中获取服务数据

      app.component.ts

      import { CrudService } from './services/crud.service';
      
      export class AppComponent implements OnInit {
        
        constructor(public crudService: CrudService) { }
        
        ngOnInit() {
      
          //get data
          this.crudService.getFFList().subscribe(data => {
            this.fflist = data.map(e => {
              return {
                id: e.payload.doc.id,
                ffdata: e.payload.doc.data(),
              };
            })
            console.log(this.fflist, "fflist");
          });
      
        }
        
      }

      您的新更新数据或新添加的数据会自动显示在您的 HTML 列表中。希望对大家有帮助,谢谢。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-17
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 1970-01-01
        • 1970-01-01
        • 2021-01-02
        相关资源
        最近更新 更多