我想解析一个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注册时,凭据对象上不存在用户属性)。
但这就是我使用||的原因运营商。苦苦挣扎了一段时间,但我无法弄清楚。希望你能提供一些帮助。感谢。
答案 0 :(得分:0)
你的方法是正确的。
在每种情况下,如果左侧的内容不是||
,则不会评估undefined
右侧的内容。
错误最有可能是credentials.displayName
为undefined
,这意味着该程序会尝试评估credentials.user.displayName
。