【问题标题】:How to get the latest updated data from firebase?如何从 firebase 获取最新的更新数据?
【发布时间】:2020-05-17 22:41:21
【问题描述】:
如何从 firebase 获取最新更新的节点 上图链接中的示例:
-
DATA & SECOND_DATA 包含相同的节点对象。 [像这样的多个节点] 实际应用中大约有 8 个节点。
-
所有 对象都可以更新,即
data1, data2, data3。 . .从两个节点。
- 所有节点的对象属性(名称、密码)都相同,只是值发生了变化。 我需要获取更新的最新节点。 IE。如果
DATA.data3 已更新,然后下一个 DATA.data2 在 firebase 中更新。我如何获得该特定数据的最新值。那是DATA.data1,然后是下一个DATA.data3
- 图片只是一个例子。数据库名称是一些示例。在实际应用中 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 列表中。希望对大家有帮助,谢谢。