firebase.auth.UserMetadata的creationTime或lastSignInTime何时返回为n



在使用Firebase身份验证注册新用户后,我在Firestore中尝试创建user文档时遇到了此问题。

user文档中,我想包括creationTimelastSignInTime字段,但发现这些字段是可选的。这意味着我必须使user文档中的这些字段也是可选的,但我不太清楚为什么它们应该是可选的。我只是想不出用户实例metadata中的那些字段在使用Firebase Auth成功注册/登录后返回时应该被设置为undefined的情况。

如果没有将它们作为undefined返回的特定情况,我计划将user文档中的这些字段作为必需字段,并抛出错误,以防它们作为undefined返回。

例如使用react-native-firebase:

try {
const { user } = await auth().signInAnonymously();
const {
metadata: { creationTime, lastSignInTime },
uid,
} = user;
if (creationTime == null) {
throw new TypeError('creationTime is returned as undefined');
}
if (lastSignInTime == null) {
throw new TypeError('lastSignInTime is returned as undefined');
}
await firestore().collection('user').doc(uid).set({ 
creationTime,
lastSignInTime,
// other fields
});
} catch (error) {
// handle error
}

但如果没有,那么别无选择,只能将它们作为可选选项。

那么,结束这个问题,是否存在creationTimelastSignInTime设置为undefined/null的情况?将它们作为必填字段处理是否安全?

(这里发布了一个类似的问题,但它已经关闭,没有答案。(

我不确定creationTime,但如果注册已经发生,但用户尚未登录,lastSignInTime可以是undefined/null。例如,用户可能需要完成电子邮件验证或类似的操作。

最新更新