# #firebase #react-native #firebase-realtime-database #firebase-authentication
#огневая база #реагировать-родной #firebase-база данных в реальном времени #firebase-аутентификация
Вопрос:
Я новичок в Firebase и в настоящее время работаю над созданием платформы в стиле социальных сетей, которая поможет мне лучше понять как React Native, так и Firebase. В настоящее время я пытаюсь запросить значение из моей коллекции пользователей в базе данных реального времени. Я не могу этого сделать из-за несоответствия между вновь созданным пользователем/зарегистрированным пользователем и сопоставленными данными указанного пользователя в их идентификаторах UID.
Идентификаторы 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();
Попробуйте сделать это, потому что идентификатор ребенка и идентификатор пользователя находятся в разных путях. С помощью этого вы получите текущий идентификатор пользователя и сможете продолжить, когда перейдете в базу данных с этим идентификатором пользователя.