сохранить данные textipnput в firebase, используя реактивный родной для мобильного приложения - PullRequest
1 голос
/ 16 марта 2019

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

// SignUp.js
import firebase from '@firebase/app';
import '@firebase/auth';
import "@firebase/database";
//import {app,db} from '../config';
import { db } from '../config';
import React, { Component } from 'react';  
import {Alert, StyleSheet, Text, TextInput, View, Button } from 'react-native';

let addItem = (Name,Password,Email) => {  
      db.ref('/items').push({
        name: Name,
        password:Password,
        email:Email
      });
    };

export default class SignUp extends Component {
  state = { 
            email: '', 
            password: '', 
            name:'',
            errorMessage: null 
          };


  handleSubmit = () => {
    addItem(this.state.name,
            this.state.password,
            this.state.email
            );
    alert('Item saved successfully');
  };


render() {
    return (
      <View style={styles.container}>
        <Text>Sign Up</Text>
        {this.state.errorMessage &&
          <Text style={{ color: 'red' }}>
            {this.state.errorMessage}
          </Text>}
        <TextInput
          placeholder="Email"
          autoCapitalize="none"
          style={styles.textInput}
          onChangeText={(email) => this.setState({ email })}
          value={this.state.email}
        />
        <TextInput
          placeholder="Name"
          autoCapitalize="none"
          style={styles.textInput}
          onChangeText={(name) => this.setState({ name })}
          value={this.state.name}
        />
        <TextInput
          secureTextEntry
          placeholder="Password"
          autoCapitalize="none"
          style={styles.textInput}
          onChangeText={(password) => this.setState({ password })}
          value={this.state.password}
        />
        <Button title="Sign Up" onPress={this.handleSubmit} />
        <Button
          title="Already have an account? Login"
          onPress={() => this.props.navigation.navigate('Login')}
        />
      </View>
    )
  }
}

Мой файл конфигурации базы данных вызывается из другого файла конфигурации.Я подтвердил файл конфигурации и ссылку на базу данных, и она работает.Я использовал его на другом addFile.js, и он работал нормально.поэтому, пожалуйста, ребята, я буду признателен, если кто-то может мне помочь с этим.Если на каком-либо материале есть предложения о том, как работать с реагирующим и firebase, я буду признателен за это.Если Firebase не самый лучший для меня (потому что я работаю над инвестиционным приложением, я хотел бы получить предложения по использованию других баз данных, таких как mongodb и справочные материалы о том, как начать работу.)

1 Ответ

2 голосов
/ 17 марта 2019

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

  handleSubmit = () => {
    firebase
  .auth()
  .createUserWithEmailAndPassword(this.state.email, this.state.password)
  .then((user) => {
    if(user.user) {
      user.user.updateProfile({
        displayName: this.state.name
      }).then(() => {
          alert('Item saved successfully');
        })
    }
  })
  .catch(error => this.setState({ errorMessage: error.message }));
};

после того, как это будет сделано, вы позже сможете получить доступ к данным пользователя следующим образом:

const user = firebase.auth().currentUser;
var postsRef = ref.child("/items/");
var newPostRef = postsRef.push();
newPostRef.set({
    name: user.displayName,
    email: user.email
});

пользователь теперь будет удерживать вседанные вам нужно идти вперед.Имейте в виду, что пароль не будет доступен для вас, поскольку он хешируется и никогда не должен сохраняться в базе данных, как это.Вот почему firebase ограничивает доступ к нему.Я использовал один из примеров для вас, вы можете найти больше на толчок здесь.https://firebase.google.com/docs/database/admin/save-data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...