我有一个与Cloud Firestore数据库集成的 Angular 7 应用程序。
我正在使用angularfire2将对象添加到数据库中。
我有一个关于在Cloud Firestore中一次添加多个对象的问题,因为我当前正在Array
中遍历对象并调用add()
方法。
在我的服务中,只要状态发生变化,它就会使用snapShotChanges()
检索数据并使用组件中的数据更新Observable
。屏幕显示给用户。
如果我对对象进行了Array
处理,并且为每个对象调用了add()
方法,则该状态将通过获取新值并在用户屏幕上更新来更改。
每次调用add()
方法时,屏幕上的内容都会更新。但是问题在于,以这种方式更新数据并在屏幕上进行更改似乎更新数据的速度较慢。
我希望snapshotChanges()
的状态仅在我添加完所有Array对象后才更改...这样,如果我添加 64个记录,它将仅在屏幕一次。
是否有一种方法无需我通过对象数组就可以使用angularfire2将其添加到Cloud Firestore中?
解决方案:
my.service.ts
const startOfMonth = moment(new Date()).startOf('month').toDate();
const endOfMonth = moment(new Date()).endOf('month').toDate();
this._angularFirestore.collection(this.trans, ref =>
ref.orderBy('date'))
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(a => {
const data = a.payload.doc.data() as any;
data.id = a.payload.doc.id;
return data;
});
})
).subscribe((trans: Transaction[]) => {
this.onTransactionsChanged.next(trans);
});
for (trans of transList) {
this._angularFirestore.collection(this.trans).add(trans);
}