Я создаю собственное приложение, которое взаимодействует с базой данных FireStore на базе FireStore.У меня есть функция writeUserData, которая записывает данные в базу данных, но по какой-то причине она не работает.Я вызываю writeUserData внутри функции signIn, которая получает данные из API Google и устанавливает состояние для этих входящих данных пользователя.Когда пользователи нажимают «Войти в Google», данные из Google должны быть записаны в базу данных.Я попытался console.logging функции, но это дает мне "отменено".Может кто-нибудь подсказать мне, как именно я могу заставить функцию работать?
Это мой код:
import React, { Component } from 'react';
import { View, Text, Button, StyleSheet, AsyncStorage } from 'react-native';
import Expo from 'expo';
// import * as firebase from 'firebase';
const firebase = require('firebase');
require('firebase/firestore');
const config = {
apiKey: 'AIzaSyBs-KPrW3sEOLAPze6OUs7DRfUThQxsDiU',
authDomain: 'dcot-consumer-57fc1.firebaseapp.com',
databaseURL: 'https://dcot-consumer-57fc1.firebaseio.com',
projectId: 'dcot-consumer-57fc1',
storageBucket: 'dcot-consumer-57fc1.appspot.com',
messagingSenderId: '977008301053'
};
if (!firebase.apps.length) {
firebase.initializeApp(config);
}
class WelcomeScreen extends Component {
constructor(props) {
super(props);
this.state = {
userid: '',
name: '',
email: '',
photoUrl: '',
address_id: ''
};
}
writeUserData(userid, name, email, photoUrl, address_id) {
firebase.firestore();
db
.collection('Users')
.add({
userid,
name,
email,
photoUrl,
address_id
})
.then(function(docRef) {
console.log('Document written with ID:', docRef.id);
})
.catch(function(error) {
console.error('Error adding document: ', error);
});
}
signIn = async () => {
try {
const result = await Expo.Google.logInAsync({
androidClientId: '798299773620 - qq7u46ort6mn6du5v9obpc8une9l44v0.apps.googleusercontent.com',
iosClientId: '798299773620-m37gc243ps4nu8bnb1o7mp7dl4ooi67g.apps.googleusercontent.com',
scopes: ['profile', 'email']
});
console.log(result);
if (result.type === 'success') {
this.setState({
userid: result.user.id,
name: result.user.name,
email: result.user.email,
photoUrl: result.user.photoUrl
});
AsyncStorage.setItem('gToken', result.user.id);
this.props.navigation.navigate('Registration', {
userid: result.user.id,
name: result.user.name,
email: result.user.email,
photoUrl: result.user.photoUrl,
address_id: ''
});
this.writeUserData;
console.log(writeUserData);
} else {
console.log('cancelled');
}
} catch (e) {
console.log('cancelled');
}
};
render() {
return (
<View style={styles.container}>
<Text> Welcome to Innopay's Consumer app! </Text>
<Button onPress={() => this.signIn()} title="Sign in With Google" color="#3B5998" />
</View>
);
}
}
export default WelcomeScreen;
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center'
}
});