如何从 snapshotChanges() 或 valueChanges() 中获取添加的对象?

Posted

技术标签:

【中文标题】如何从 snapshotChanges() 或 valueChanges() 中获取添加的对象?【英文标题】:How to get the added object from snapshotChanges() or valueChanges()? 【发布时间】:2018-09-26 08:06:34 【问题描述】:

我正在尝试根据读取的当前 snapshotChanges 中添加的项目触发本地通知,但我不想要整个对象数组,我只想要最新添加的对象。

constructor( public afs: AngularFirestore ) 
    // Monitor all activities
    this.itemsCollection = this.afs.collection<any>('activity', x => x.orderBy('saved', 'desc'));
    this.items$ = this.itemsCollection.snapshotChanges().map(actions => 
      return actions.map(action => 
        const data = action.payload.doc.data();
        const id = action.payload.doc.id;
        return  id, ...data ;
      );
    );

我希望每次添加新项目时我都能采取行动,仅针对特定的新项目。

【问题讨论】:

【参考方案1】:

我用以下方法解决了它:

// Listen to the observable for changes, take the first item of that array.
this.items$.subscribe(data => 
  console.log(data[0]);
);

【讨论】:

以上是关于如何从 snapshotChanges() 或 valueChanges() 中获取添加的对象?的主要内容,如果未能解决你的问题,请参考以下文章

AngularFire firestore get / snapshotchanges / valuechanges 对 observable 的操作不是异步的吗?

更新 .snapshotChanges() 代码以使用 angularfire2 5.0..0 rc-8、firebase 5.0.2

angularfire2@5.0.0-rc.10 .snapshotChanges() 不能让你得到 doc.payload.doc.data()

如何从firestore获取当前用户数据?

Angular Firestore 中有 .get() 吗?

如何从 v-text 文件或 v-input 文件中删除下划线