在使用Firebase身份验证注册新用户后,我在Firestore中尝试创建user
文档时遇到了此问题。
在user
文档中,我想包括creationTime
和lastSignInTime
字段,但发现这些字段是可选的。这意味着我必须使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
}
但如果没有,那么别无选择,只能将它们作为可选选项。
那么,结束这个问题,是否存在creationTime
或lastSignInTime
设置为undefined
/null
的情况?将它们作为必填字段处理是否安全?
(这里发布了一个类似的问题,但它已经关闭,没有答案。(
我不确定creationTime,但如果注册已经发生,但用户尚未登录,lastSignInTime可以是undefined/null。例如,用户可能需要完成电子邮件验证或类似的操作。