#javascript #reactjs #firebase #react-native #google-cloud-firestore
#javascript #reactjs #firebase #реагировать — родной #google-облако-firestore
Вопрос:
Кто-нибудь может сказать, почему информация не сохраняется в firestore, учетные данные отражаются при аутентификации после регистрации. Я хочу, чтобы те же данные, такие как имя пользователя, адрес электронной почты и пароль, используемые для регистрации, также сохранялись в firestore одновременно, но отправляемые мной данные не отражаются в firestore. Я ввожу данные из TextInput и устанавливаю их в состояние. Кроме того, моя firebase находится в тестовом режиме, поэтому чтение и запись разрешены в созданном мной firestore. Я правильно импортировал настройки и конфигурацию в индексный файл, и аутентификация также работает
import {
View,
Text,
Button,
StyleSheet,
TouchableOpacity,
SafeAreaView,
KeyboardAvoidingView,
} from 'react-native';
import CustomTextInput from '../components/CustomTextInput';
import * as firebase from 'firebase';
const SignUp = (props) => {
const [firstName, setFirstName] = useState('');
const [secondName, setSecondName] = useState('');
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const registerUserNoThunk = async () => {
const user = {firstName, secondName, email, password};
try {
const result = await firebase
.auth()
.createUserWithEmailAndPassword(user.email, user.password);
// const data = await result.json();
console.log(result);
console.log(firebase.auth().currentUser.uid, 'userid');
const usersdata = await firebase
.firestore()
.collection('users')
.doc(firebase.auth().currentUser.uid,)
.set({firstName, secondName, email});
console.log(usersdata, 'usersdata');
} catch (error) {
console.log(error);
}
};
return (
<>
<SafeAreaView style={{flex: 1}}>
<KeyboardAvoidingView
style={{flex: 1}}
behavior="height"
keyboardVerticalOffset="10">
<View style={styles.mainview}>
<View style={styles.card}>
<CustomTextInput
label="First Name"
value={firstName}
onChangeText={(text) => {
setFirstName(text);
}}
/>
<CustomTextInput
label="Second Name"
value={secondName}
onChangeText={(text) => {
setSecondName(text);
}}
/>
<CustomTextInput
label="Email"
value={email}
onChangeText={(text) => {
setEmail(text);
}}
/>
<CustomTextInput
label="Password"
value={password}
onChangeText={(text) => {
setPassword(text);
}}
secureTextEntry
/>
{/* <View>
<Button title="Sign Up" onPress={registerUser} />
</View> */}
</View>
<TouchableOpacity
onPress={() => {
props.navigation.navigate('ScreenOne');
}}>
<View>
<Text>Already a member? Login</Text>
</View>
</TouchableOpacity>
<View>
<Button title="Sign Up" onPress={registerUserNoThunk} />
</View>
</View>
</KeyboardAvoidingView>
</SafeAreaView>
</>
);
};
Custom Text Input File
import React from 'react';
import {View, Text, TextInput, StyleSheet} from 'react-native';
const CustomTextInput = (props) => {
return (
<View style={styles.inputcontainer}>
<Text>{props.label}</Text>
<TextInput {...props} style={styles.inputstyle} />
</View>
);
};
const styles = StyleSheet.create({
inputstyle: {
borderBottomWidth: 2,
borderBottomColor: 'grey',
height: 30,
padding: 0,
},
inputcontainer: {marginVertical: '5%', width: '100%'},
});
export default CustomTextInput;
Комментарии:
1. это просто синтаксическая ошибка в вашем вопросе
.doc(firebase.auth().currentUser.uid,)
? Я вижу запятую после uid2. что это регистрирует здесь?
console.log(usersdata, 'usersdata');
3. @АбделП. после uid нет запятой, когда я запускаю код, это только по ошибке
4. @АбделП. userdata — это данные, которые я пытаюсь сохранить в firestore