Данные не сохраняются в firestore после регистрации, но аутентификация работает

#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,) ? Я вижу запятую после uid

2. что это регистрирует здесь? console.log(usersdata, 'usersdata');

3. @АбделП. после uid нет запятой, когда я запускаю код, это только по ошибке

4. @АбделП. userdata — это данные, которые я пытаюсь сохранить в firestore