Я регистрирую пользователя с помощью аутентификации Firebase, а затем сохраняю данные пользователя в коллекции / users в Firestore из приложения React / Redux.Я включил поле createAt , которое сохраняет метку времени сервера Firestore, чтобы определить, когда был создан пользователь.Вызов .set выглядит следующим образом:
try {
let newUser = {
displayName,
createdAt: firestore.FieldValue.serverTimestamp(),
showWizard: true,
role: "client",
status: "signedUp",
schoolName,
quiz,
email
};
await firestore.set(`users/${currentUser.uid}`, {
...newUser
});
} catch (err) {
dispatch(asyncActionError());
toastr.error("Something went wrong", err.message);
throw new SubmissionError({
_error: err.message
});
}
Затем я хочу получить этот пользовательский документ для отправки аналитических данных в сегмент, включая метку времени.Вызов для извлечения данных и запуска действия сегмента Redux выглядит следующим образом:
try {
const newUserDoc = await firestore.get(`users/${currentUser.uid}`);
const newUserRecord = {
id: newUserDoc.id,
...newUserDoc.data()
};
console.log(newUserRecord);
dispatch({
type: USER_SIGN_UP,
meta: {
analytics: [
{
eventType: EventTypes.identify,
eventPayload: {
userId: newUserRecord.id,
traits: {
email: newUserRecord.email,
createdAt: newUserRecord.createdAt.toDate().toISOString(),
displayName: newUserRecord.displayName,
quiz: newUserRecord.quiz,
schoolName: newUserRecord.schoolName,
role: newUserRecord.role
}
}
},
{
eventType: EventTypes.track,
eventPayload: {
event: "User Signed Up",
properties: {
category: "Admin",
label: newUserRecord.quiz
}
}
}
]
}
});
dispatch(asyncActionFinish());
return newUserRecord;
} catch (error) {
dispatch(asyncActionError());
toastr.error("Something went wrong", error.message);
throw new SubmissionError({
_error: error.message
});
}
Документ пользователя отображается без ошибок, но поле creationAt отображается как ноль.Когда я проверяю консоль Firebase через мгновение, поле createAt заполняется правильной датой.
Кажется, что создание временной метки сервера не завершено к тому времени, когда я получаю документ.Как я могу убедиться, что получение документа будет включать правильную метку времени?
Спасибо за вашу помощь!