Почему идентификатор пользователя базы данных Firebase в реальном времени не совпадает с идентификатором аутентификации Firebase после регистрации пользователя?

# #firebase #react-native #firebase-realtime-database #firebase-authentication

#огневая база #реагировать-родной #firebase-база данных в реальном времени #firebase-аутентификация

Вопрос:

Я новичок в Firebase и в настоящее время работаю над созданием платформы в стиле социальных сетей, которая поможет мне лучше понять как React Native, так и Firebase. В настоящее время я пытаюсь запросить значение из моей коллекции пользователей в базе данных реального времени. Я не могу этого сделать из-за несоответствия между вновь созданным пользователем/зарегистрированным пользователем и сопоставленными данными указанного пользователя в их идентификаторах UID.

Просмотр данных в базе данных в реальном времени

Проверка подлинности Firebase одного и того же пользователя

Идентификаторы UID между обоими этими пользователями не совпадают, несмотря на то, что они были созданы одновременно во время регистрации, и мне было трудно понять, почему. Ниже показано, как я настроил создание пользователя и хранение необходимой информации в БД.

 const handleSignup = () =gt; {  if (!email) {  alert("Please enter your email address");  return;  }   if (!password) {  alert("Please enter a password");  return;  }   auth  .createUserWithEmailAndPassword(email, password)  .then((userCredentials) =gt; {  const user = userCredentials.user;  console.log("Registered with:", user.email);  navigation.replace("Tabs");  })  .catch((error) =gt; {  alert(error);  console.log(error);  });  };   const createUser = () =gt; {  const userRef = firebase.database().ref("User");  const userData = {  firstName: "",  lastName: "",  userName: "",  email: "",  password: "",  phoneNumber: "",  };  userRef.push(userData);  };   const writeUserData = (  fname,  lname,  email,  password,  username,  phoneNumber  ) =gt; {  firebase  .database()  .ref("User/")  .push({  email,  fname,  lname,  password,  username,  phoneNumber,  })  .then((data) =gt; {  //success callback  console.log("data ", data);  })  .catch((error) =gt; {  //error callback  console.log("error ", error);  });  };   const handleSignupAndCreateUser = () =gt; {  handleSignup();  createUser();  writeUserData(fname, lname, email, password, username, phoneNumber);  };  

Я попытался установить значение переменной равным user.uid, а затем задать путь при передаче данных, но столкнулся с ошибкой: «Ошибка типа: Идентификатор пользователя доступен только для чтения». Есть какие-нибудь идеи относительно того, почему это может быть в случае с UID между различными службами?

Ответ №1:

 FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();  String userId = user.getUid();  

Попробуйте сделать это, потому что идентификатор ребенка и идентификатор пользователя находятся в разных путях. С помощью этого вы получите текущий идентификатор пользователя и сможете продолжить, когда перейдете в базу данных с этим идентификатором пользователя.