#firebase #firebase-authentication #react-native-firebase
#firebase #firebase-аутентификация #реагировать-родной-firebase
Вопрос:
Я столкнулся с этой проблемой при попытке создать user
документ в Firestore после регистрации нового пользователя с использованием аутентификации Firebase.
В user
документе я хочу включить creationTime
lastSignInTime
поля и, но обнаружил, что эти поля являются необязательными. Это означает, что мне также придется сделать эти поля в моем user
документе необязательными, но я не совсем уверен, почему они должны быть необязательными в первую очередь. Я просто не могу представить случай, когда эти поля в metadata
экземпляре пользователя должны быть установлены так, как undefined
если бы они возвращались после успешной регистрации / входа с использованием Firebase Auth.
Если нет конкретного случая, когда они возвращаются как 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
для or lastSignInTime
установлено значение undefined
/ null
? Безопасно ли просто рассматривать их как обязательные поля?
(Аналогичная проблема опубликована здесь, но она закрыта без ответа.)
Ответ №1:
Я не уверен насчет CreationTime, но lastSignInTime может быть undefined / null, если регистрация произошла, но пользователь еще не вошел в систему. Например, пользователю может потребоваться выполнить проверку электронной почты или что-то в этом роде.