如何使用Angularfire2一次插入多个对象?

时间:2019-02-20 17:12:22

标签: angular typescript observable angularfire2

我有一个与Cloud Firestore数据库集成的 Angular 7 应用程序。

我正在使用angularfire2将对象添加到数据库中。

我有一个关于在Cloud Firestore中一次添加多个对象的问题,因为我当前正在Array中遍历对象并调用add()方法。

在我的服务中,只要状态发生变化,它就会使用snapShotChanges()检索数据并使用组件中的数据更新Observable。屏幕显示给用户。

如果我对对象进行了Array处理,并且为每个对象调用了add()方法,则该状态将通过获取新值并在用户屏幕上更新来更改。

每次调用add()方法时,屏幕上的内容都会更新。但是问题在于,以这种方式更新数据并在屏幕上进行更改似乎更新数据的速度较慢。

我希望snapshotChanges()的状态仅在我添加完所有Array对象后才更改...这样,如果我添加 64个记录,它将仅在屏幕一次。

是否有一种方法无需我通过对象数组就可以使用angularfire2将其添加到Cloud Firestore中?

解决方案:

  1. 仅在完成所有添加后才更改Observable的状态 数组对象...在屏幕上向用户更新一次。

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);
}

0 个答案:

没有答案