我试图使用角度和火基建立一个最简单的前端后端关系。当用户登录时,我需要将用户信息推送到Firestore。我推了令牌,但是用户数据停止了管道,没有任何东西被推送。
“firebase.auth().currentUser”将数据添加到Firestore集合中,但每次我尝试该应用程序时,似乎都不会推送任何数据。
import {
Component
} from '@angular/core';
import {
AngularFireMessaging
} from '@angular/fire/messaging';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/take';
import {
filter
} from 'rxjs/operators';
import {
mergeMapTo
} from 'rxjs/operators';
import {
mergeMap
} from 'rxjs/operators';
import {
AngularFireAuth
} from '@angular/fire/auth';
import firebase from 'firebase/app';
import {
AngularFirestore,
AngularFirestoreCollection
} from '@angular/fire/firestore';
import {
Observable
} from 'rxjs';
import {
switchMap
} from 'rxjs/operators';
export class AppComponent {
private user = firebase.auth().currentUser
constructor(private afMessaging: AngularFireMessaging, public auth: AngularFireAuth, private afs: AngularFirestore) {}
requestPermission() {
this.afMessaging.requestPermission
.pipe(mergeMapTo(this.afMessaging.tokenChanges))
.subscribe(
(token) => {
this.afs.collection('users').add({
fcmtoken: token,
userid: user.uid
})
},
(error) => {
console.error(error);
},
);
}
listen() {
this.afMessaging.messages
.subscribe((message) => {
console.log(message);
});
}
deleteToken() {
this.afMessaging.getToken
.pipe(mergeMap(token => this.afMessaging.deleteToken(token)))
.subscribe(
(token) => {
console.log('Token Has Been Deleted, Get a New One');
},
);
}
login() {
this.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
}
logout() {
this.auth.signOut();
}
}
问题就在这里
requestPermission() {
this.afMessaging.requestPermission
.pipe(mergeMapTo(this.afMessaging.tokenChanges))
.subscribe(
(token) => {
this.afs.collection('users').add({
fcmtoken: token,
//if i remove this - all works well. the token is pushed//
userid: user.uid
//
})
},
(error) => {
console.error(error);
},
);
}
如何使用这段代码并创建一个系统,其中为每个用户创建一个新文档,并且该文档保存使用过的数据,包括令牌。
发布于 2021-12-09 01:23:37
也许..。用户无效,您的代码不工作。
requestPermission(user: User) { // (1) give a valid user.
this.afMessaging.requestPermission
.pipe(mergeMapTo(this.afMessaging.tokenChanges))
.subscribe(
(token: string | null) => { // (2) this can be null.
if (!token) { // (3) add validation.
return
}
this.afs.collection('users').add({
fcmtoken: token,
// (4) this will work.
userid: user.uid
//
})
},
(error: any) => {
console.error(error);
},
);
}https://stackoverflow.com/questions/67047177
复制相似问题