从 Firebase Ionic 读取用户时出错 Angular

Error while reading user from Firebase Ionic Angular

我在尝试读取和存储用户电子邮件时遇到错误。

addroom.page.ts: 构造函数:

constructor(private crudService: CrudService, private fbauth: AngularFireAuth) { }

方法:

async createRecord() {
    const user = await this.fbauth.authState.pipe(first()).toPromise();
    const record = {};
    record['Name'] = this.roomName;
    record['Number'] = this.roomNumber;
    record['Description'] = this.roomDescription;
    record['User'] = user;
    this.crudService.create_NewRoom(record).then(resp => {
      this.roomName = "";
      this.roomNumber = undefined;
      this.roomDescription = "";
      this.roomUser = user.email;
      console.log(resp);
    })
      .catch(error => {
        console.log(error);
      });
  }

service.ts(CrudService):

import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';

@Injectable({
  providedIn: 'root'
})
export class CrudService {

  constructor(
    private firestore: AngularFirestore
  ) { }

  create_NewRoom(record) {
    return this.firestore.collection('Rooms').add(record);
  }

  read_Rooms() {
    return this.firestore.collection('Rooms').snapshotChanges();
  }

  update_Room(recordID,record){
    this.firestore.doc('Rooms/' + recordID).update(record);
  }

  delete_Room(recordID) {
    this.firestore.doc('Rooms/' + recordID).delete();
  }
}

进口:

import { Component, OnInit } from '@angular/core';
import { CrudService } from '../service/service';
import { AngularFireAuth } from '@angular/fire/auth';
import { first } from "rxjs/operators";

我得到一个错误:

ERROR 错误:未捕获(承诺):FirebaseError:[code=invalid-argument]:使用无效数据调用函数 DocumentReference.set()。不支持的字段值:自定义 Q 对象(在用户字段中找到)

如有任何帮助,我们将不胜感激!

如错误提示,您无法存储自定义对象,在本例中为 Firebase.User。你需要提取你想要的属性,例如:

record['User'] = { email: user.email, displayName: user.displayName };

虽然我喜欢使用 table,我在其中存储与用户相关的所有数据,以便于访问并且无需提取特定数据。所以在这种情况下,我会在创建 "new room" 时只存储用户的 uid,并将用户数据放在单独的 table 中。这只是我的建议:)