首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种使用currentUser uid创建修复文档的方法

是否有一种使用currentUser uid创建修复文档的方法
EN

Stack Overflow用户
提问于 2021-04-11 16:00:49
回答 1查看 74关注 0票数 0

我试图使用角度和火基建立一个最简单的前端后端关系。当用户登录时,我需要将用户信息推送到Firestore。我推了令牌,但是用户数据停止了管道,没有任何东西被推送。

“firebase.auth().currentUser”将数据添加到Firestore集合中,但每次我尝试该应用程序时,似乎都不会推送任何数据。

代码语言:javascript
复制
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();
  }



}

问题就在这里

代码语言:javascript
复制
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);
      },
    );

}

如何使用这段代码并创建一个系统,其中为每个用户创建一个新文档,并且该文档保存使用过的数据,包括令牌。

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 01:23:37

也许..。用户无效,您的代码不工作。

代码语言:javascript
复制
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);
      },
    );

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67047177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档