为对象的属性分配许多值之一

时间:2018-05-08 14:29:14

标签: typescript firebase-authentication

我想解析一个firebase auth凭证对象,该对象的格式不同,适用于各种登录方法。

例如,对于密码注册,我想要的数据是直接使用凭据,但对于facebook或google登录,我想要的数据位于 credentials.user

所以我有这个功能:

parseCredentials(credentials: any): User {
    const parsedCredentials: User = {
      displayName: credentials.displayName || credentials.user.displayName,
      email: credentials.email || credentials.user.email,
      emailVerified: credentials.emailVerified || credentials.user.emailVerified,
      uid: credentials.uid || credentials.user.uid
    };
    return parsedCredentials;
  }

正如您所看到的,我使用该函数根据传递给fn的凭据返回一个新的User对象,因为我不需要User对象中不必要的信息。

问题是,当我用电子邮件密码唱歌时,我收到错误: credentials.user未定义

我认为||有问题运营商。似乎credentials.user未定义(因为在使用email-password注册时,凭据对象上不存在用户属性)。

但这就是我使用||的原因运营商。苦苦挣扎了一段时间,但我无法弄清楚。希望你能提供一些帮助。感谢。

1 个答案:

答案 0 :(得分:0)

你的方法是正确的。

在每种情况下,如果左侧的内容不是||,则不会评估undefined右侧的内容。

错误最有可能是credentials.displayNameundefined,这意味着该程序会尝试评估credentials.user.displayName