确定已在Firestore列表中添加/删除/更改的内容

时间:2018-12-03 02:01:29

标签: javascript angular google-cloud-firestore angularfire2

Firestore作为后端。我已经成功地通过使用简单的基本方法来解决问题。但是,我想了解如何确定对初始订阅后返回的项目列表所做的更改。

我最终要做的是: -减少每次阅读的文件数量 -为项目列表制作动画(进入动画,退出动画,更改动画)

在下面的示例中,我具有基本的crud方法以及初始订阅:

posts:post [] = [];

constructor(private db: AngularFirestore){}

ngOnInit(){

//The initial subscription to the posts
this.db.collection("Posts").valuechanges().subscribe( _posts => {
this.posts = _posts;
});


async addItem(_post:post)
{
_post.id = this.db.createId();
await this.db.collection("Posts").doc(_post.id).set(_post);
}

async update(_post:post)
{
await this.db.collection("Posts").doc(_post.id).update(_post);

}

delete (_post:post)
{
await this.db.collection("Posts").doc(_post.id).delete();

}

通过上述方法,我正在订阅Posts集合中的文档。最初,我收到Post类型的错误,并且每当添加,更新或删除另一个项目时,我就会收到Post类型的更新数组。

如何区分该项目发生了什么,以便可以对更改进行动画处理(即,对项目的输入进行动画处理,等等)?

如果您可以显示示例代码,这真的对我有帮助吗?

谢谢

1 个答案:

答案 0 :(得分:0)

可观察到的valueChanges仅公开文档中的实际数据。它没有关于文档的其他元数据,也没有更改的类型。

如果您需要更多信息,请改用documentChanges。该操作公开了DocumentChangeAction个对象流,其中除其他外还包含一个type属性DocumentChangeType

请参见https://github.com/angular/angularfire2/blob/master/docs/firestore/documents.md#the-documentchangeaction-type