2
respostas

Firestore não grava

Esse é o meu firebase.js:

// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
import AsyncStorage from "@react-native-async-storage/async-storage";
import { initializeAuth, getReactNativePersistence} from "firebase/auth";
import { getFirestore } from 'firebase/firestore';
import {
  API_KEY,
  AUTH_DOMAIN,
  PROJECT_ID,
  STORAGE_BUCKET,
  MESSAGING_SENDER_ID,
  APP_ID,
  MEASUREMENT_ID,
} from '@env'

// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
  apiKey: API_KEY,
  authDomain: AUTH_DOMAIN,
  projectId: PROJECT_ID,
  storageBucket: STORAGE_BUCKET,
  messagingSenderId: MESSAGING_SENDER_ID,
  appId: APP_ID,
  measurementId: MEASUREMENT_ID,
};

const app = initializeApp(firebaseConfig);
const db = getFirestore(app)

const auth = initializeAuth(app, {
  persistence: getReactNativePersistence(AsyncStorage)
});

export { auth, db }

Esse é o meu DadosProduto/index.js:

import { ToastAndroid, View } from "react-native";
import { EntradaTexto } from "../../componentes/EntradaTexto";
import Botao from "../../componentes/Botao";
import estilos from './estilos'
import { useState } from "react";
import { addDoc, collection } from "firebase/firestore";
import { db } from "../../config/firebase";
import { NativeStackNavigationProp } from "@react-navigation/native-stack";



export default function DadosProduto({navigation}) {

    const [produto, setProduto] = useState({
        nome: '',
        preco: ''
    });

    async function criarProduto() {
        
        await addDoc(collection(db, "produtos"), {
            "nome": produto.nome,
            "preco": produto.preco
        });

        ToastAndroid.show('Produto criado com sucesso', ToastAndroid.SHORT);
        navigation.navigate('Principal');
    }

    return (
        <View style={estilos.container}>
            <EntradaTexto 
                label={"Nome do produto"} 
                value={produto.nome}
                autoCapitalize='sentences' 
                onChangeText={(texto) => setProduto({...produto, nome: texto})}           
            />
            <EntradaTexto 
                label={'Preço do produto'}
                value={produto.preco}
                onChangeText={(texto) => setProduto({...produto, preco: texto})}
            />
            <Botao onPress={() => criarProduto()}>Salvar</Botao>            
        </View>
    )
}

Não importa quantas vezes eu tente, a aplicação simplesmente não navega de volta para a tela anterior pq o firestore simplesmente não executa nada depois dessa linha que eu tento gravar. E nem adianta colocar try catch pq ele simplesmente não retorna exceção alguma. No firebase até consta leituras, mas o número de gravações não muda

2 respostas

vc consegue postar teu repositório aqui? valeu!

Eu já resolvi. Tinha uma vírgula esquecida no meu .env. Por algum motivo, isso não impediu o auth de rodar, mas impediu o firestore

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software