【问题标题】:Ad field to user in angular firestore / firebase在 angular firestore / firebase 中向用户展示广告字段
【发布时间】:2020-09-22 08:56:36
【问题描述】:

当使用 Angular Firestore 使用电子邮件和密码登录时,用户对象被设置为 auth.service 中的本地存储。为该用户设置了 5 个字段。我想添加一个名为“designer”的附加字段,它是一个布尔值。但是,我不断收到错误消息,提示我尝试将字段设置为“未定义”值。

我不知道如何更改此设置,以便将附加的“设计器”字段作为 result.user 的一部分返回。也许还有其他方法。

身份验证服务

// Sign in with email/password
SignIn(email, password) {
  return this.afAuth.signInWithEmailAndPassword(email, password)
    .then((result) => {
      this.ngZone.run(() => {
        this.router.navigate(['profile']);
      });
      this.SetUserData(result.user);
    }).catch((error) => {
      window.alert(error.message)
    })
}


SetUserData(user) {
  const userRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${user.uid}`);
  const userData: User = {
    uid: user.uid,
    email: user.email,
    displayName: user.displayName,
    photoURL: user.photoURL,
    emailVerified: user.emailVerified,
    designer:user.designer
  }
  return userRef.set(userData, {
    merge: true
  })
}

【问题讨论】:

    标签: angular google-cloud-firestore


    【解决方案1】:

    你试过更新吗

     SetUserData(user) {
      const userRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${user.uid}`);
      const userData: User = {
       uid: user.uid,
       email: user.email,
       displayName: user.displayName,
       photoURL: user.photoURL,
       emailVerified: user.emailVerified,
       esigner:user.designer
     }
     return userRef.update({...userData}) //here
    }
    

    【讨论】:

    • 返回基本相同的错误。使用无效数据调用的函数 DocumentReference.update()。不支持的字段值:未定义(在字段设计器中找到)
    • 不走运。同样的错误。 SetUserData函数中用于设置userData对象的对象来自函数输入。我认为必须更改登录函数的返回值。
    【解决方案2】:

    怎么样:

    return userRef.set(userData, {
    merge: (merge === 'true')
     })
    

    【讨论】:

    • 同样的错误。不确定是否可以在 SetUserData 函数中修复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    相关资源
    最近更新 更多