【问题标题】:Getting error during implementing unique user name在实现唯一用户名时出错
【发布时间】:2020-09-21 08:06:23
【问题描述】:

我正在看这个视频。 https://www.youtube.com/watch?v=NLWHEiH1FZY

我希望我的 Angular Firebase 应用与用户一起使用,不会重复类似的用户名。但是我遇到了两个错误

类型参数 '(auth: User) => any[] | AngularFireObject' 不可分配给类型为 '(value: User, index: number) => ObservableInput' 的参数。
键入'任何 [] | AngularFireObject' 不可分配给类型 'ObservableInput'。
类型“AngularFireObject”不可分配给类型“ObservableInput”。
“AngularFireObject”类型中缺少属性“[Symbol.iterator]”,但在“Iterable”类型中是必需的。

我的代码是

export class User {
      uid: string;
      username: string = "";
    
      constructor(auth) {
        this.uid = auth.uid
      }
}

错误发生在

    this.afAuth.authState.pipe(
      switchMap(auth => {
        if (auth) {
          this.currentUser = new User(auth)  
          return this.db.object(`users/${auth.uid}`) // getting error here
        } else return [];
      })
    )

【问题讨论】:

    标签: angular typescript firebase-realtime-database firebase-authentication angularfire


    【解决方案1】:

    当你使用 switchMap 操作符时,你需要返回一个 observable。尝试返回valueChanges() 方法。

    this.afAuth.authState.pipe(
      switchMap(auth => {
        if (auth) {
          this.currentUser = new User(auth);
          return this.db.object(`users/${auth.uid}`).valueChanges();   // <-- return `valueChanges()` here
        } else return of([]);      // <-- `of` method to return an observable
      })
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 2012-10-10
      相关资源
      最近更新 更多