
Update 2/26/24
This post is out of date since Firebase 9. For latest Firebase posts, seeCode.Build.
I am crazy, so I created a quick reference. Let me know if I missed one!
Note:
afa = AngularFireAuth
afs = AngularFirestore
but should be same premise in any framework.
Docs
constfoo=awaitthis.afs.doc(`docPath`).valueChanges().pipe(take(1)).toPromise();
or
constfoo=(awaitthis.afs.doc('docPath').get().toPromise()).data();
or
constfoo=(awaitthis.afs.doc('docPath').get().pipe(take(1)).toPromise()).data();
or
constfoo=(awaitthis.afs.doc('docPath').snapshotChanges().pipe(take(1)).toPromise()).payload.data();
But the shortest is:
constfoo=(awaitthis.afs.doc('docPath').ref.get()).data();
Collections
constfoo=awaitthis.afs.collection('colPath').valueChanges().pipe((take(1))).toPromise();
or
constfoo=(awaitthis.afs.collection('colPath').snapshotChanges().pipe(take(1)).toPromise()).map((m)=>m.payload.doc.data());
or
constfoo=(awaitthis.afs.collection('colPath').get().toPromise()).docs.map((m)=>m.data());
or (overkill from last version)
constfoo=(awaitthis.afs.collection('colPath').get().pipe(take(1)).toPromise()).docs.map((m)=>m.data());
or
constfoo=(awaitthis.afs.collection('colPath').ref.get()).docs.map((m)=>m.data());
User
As you may have noticed...
constbar=awaitthis.afa.currentUser;
... does not load correctly in a lot of cases.
So try these:
constbar=awaitthis.afa.authState.pipe(take(1)).toPromise();
or (authstatechanged is most accurate)
constbar=awaitnewObservable((observer:any)=>{this.afa.onAuthStateChanged(observer)}).pipe(take(1)).toPromise();
or
constbar=awaitnewPromise((resolve:any,reject:any)=>this.afa.onAuthStateChanged((user)=>{user?resolve(true):resolve(false);},(e:any)=>reject(e)));
or (the shortest)
constbar=awaitthis.afa.user.pipe(take(1)).toPromise();
And anywhere you can usetake(1)
you can usefirst()
if you want to emit an error.
J
Top comments(0)
Subscribe
For further actions, you may consider blocking this person and/orreporting abuse