Angularfire的snapshotChanges()和Firestore JavaScript库的onSnapshot()都用于监听Firestore数据库中的文档或集合的更改。但是它们之间有一些区别。
下面是使用这两种方法的代码示例:
使用snapshotChanges()的代码示例:
import { AngularFirestore } from '@angular/fire/firestore';
constructor(private firestore: AngularFirestore) {}
getData() {
return this.firestore.collection('users').snapshotChanges().subscribe((data) => {
data.forEach((doc) => {
console.log(doc.payload.doc.data());
});
});
}
使用onSnapshot()的代码示例:
var db = firebase.firestore();
function getData() {
return db.collection("users").onSnapshot((querySnapshot) => {
querySnapshot.forEach((doc) => {
console.log(doc.data());
});
});
}
// 调用函数,开始监听
var unsubscribe = getData();
// 取消监听
unsubscribe();
在这两个示例中,我们监听了Firestore数据库中的“users”集合的更改,并在每次更改时获取文档数据。但是,使用snapshotChanges()时,我们需要使用AngularFire的AngularFirestore服务,而使用onSnapshot()时,我们可以直接使用Firestore JavaScript库。