Я создаю веб-приложение с Reactjs и firebase и столкнулся с небольшой проблемой.
У меня есть система регистрации / входа в систему благодаря учетным записям Firebase и Gmail.
Когда пользователь регистрируется, в дополнение к классической функции firebase, я вызываю функцию для записи информации о пользователе в моей базе данных.
Проблема, с которой я сталкиваюсь, заключается в следующем:
если пользователь, который уже зарегистрирован через свой аккаунт гугл, что он заполнил вещи в приложении и что он был зарегистрирован в базе, если пользователь попытается зарегистрироваться снова (потому что он забыл, что оно уже зарегистрировано), вся информация о нем удаляется из базы данных.
Например, вот структура моей базы:
users
- user-1
--- E-mail
--- username
--- data
----- sub-data
- user-2
--- E-mail
--- username
--- data
----- sub-data
Если пользователь 1 попытается зарегистрироваться снова, вот новая база:
users
- user-1
--- E-mail
--- username
--- data
----- sub-data
- user-2
--- E-mail
--- username
--- data
----- sub-data
Итак, это мой код для регистрации:
auth.signInWithPopup(googleProvider)
.then((result) => {
db.doCreateUser(result.user.uid, result.user.displayName,
result.user.email);
});
и функция doCreateUser:
doCreateUser = (id, username, email) =>
db.ref(`users/${id}`).set({
username: username,
email: email,
});
Можно ли узнать, зарегистрирован ли пользователь в этой учетной записи Google? Если да, можете ли вы дать мне некоторые идеи, чтобы сделать это?
Я попытался восстановить ошибку, выполнив следующее:
authen.signInWithPopup (provider) .catch (function (error) {
console.log (error);
});
но консоль пуста
Если нет, то как не заменить данные (либо путем непосредственного соединения, а не путем перерегистрации или перезаписи, сохраняя данные в «данных» и под-данных »)?
спасибо