Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não acontece nada no banco do firestore

Meu firebase.js:

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



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 auth = initializeAuth(app, {
    persistence: getReactNativePersistence(AsyncStorage)
})

const db = getFirestore(app); 

export { auth, db };  

Minha pagina principal:

import React, { useEffect } from 'react';
import { View, Text } from 'react-native';
import Cabecalho from '../../componentes/Cabecalho';
import Produto from '../../componentes/Produtos';
import estilos from './estilos';
import { auth } from '../../config/firebase';
import { db } from '../../config/firebase';
import { setDoc, collection, addDoc } from 'firebase/firestore';

export default function Principal({ navigation }) {
  const usuario = auth.currentUser;

  function deslogar(){
    auth.signOut();
    navigation.replace('Login');
  }

  useEffect(() => {
    async function criarProduto(){
      await addDoc(collection(db, "produt"),{
        nome: "Tenis",
        preco: 890.90
      });
    }
    criarProduto()
  },[])

  return (
    <View style={estilos.container}>
      <Cabecalho logout={deslogar} />
      <Text style={estilos.texto}>Usuário: {usuario.email}</Text>

      <Produto nome="Tênis" preco="200,00" />
      <Produto nome="Camisa" preco="100,00" />
      <Produto nome="Suplementos" preco="150,00" />
     </View>
  );
}

Tentei dos dois modos, usando o setDoc e o Collection, quando atualizo nada é persistido no banco do firestore. Insira aqui a descrição dessa imagem para ajudar na acessibilidadecodigo github: https://github.com/adamorhenner/react-native-firebase-authentication

2 respostas
solução!

Olá, Adamor, tudo bem?

Analisando o código que você compartilhou, notei que você está utilizando tanto o método setDoc quanto o método addDoc para tentar persistir os dados. O método setDoc é utilizado para atualizar um documento existente no Firestore, enquanto o método addDoc é utilizado para criar um novo documento. No entanto, no código que você compartilhou, você está tentando criar um novo documento na coleção "produt". É importante lembrar que os nomes de coleções no Firestore são case-sensitive, ou seja, "produt" e "produtos" são coleções diferentes. Verifique se o nome da coleção que você está tentando acessar está correto.

Além disso, é importante garantir que a conexão com o Firestore esteja funcionando corretamente. Verifique se as credenciais do Firebase estão configuradas corretamente no arquivo firebase.js. Certifique-se de que as variáveis de ambiente que você está utilizando para configurar as credenciais (API_KEY, AUTH_DOMAIN, PROJECT_ID, STORAGE_BUCKET, MESSAGING_SENDER_ID, APP_ID e MEASUREMENT_ID) estão definidas corretamente no arquivo .env.

Tente alterar o seu código da seguinte forma:

async function criarProduto(){
  await addDoc(collection(db, "produtos"),{
    nome: "Tênis",
    preco: 200.00
  });
}

Verifique se o objeto que você está passando para o método addDoc está correto e se os tipos de dados dos valores que você está tentando persistir estão de acordo com o que o Firestore espera. É possível que o problema esteja relacionado a um tipo de dado incorreto ou a um erro de digitação no nome do campo.

Espero que essas dicas possam te ajudar a resolver o problema que você está enfrentando, e qualquer coisa estou por aqui

Abraço e bons estudos!

Eu tinha reparado o nome da tabela diferente, tinha ajustado mas não deu em nada, então notei que também estava faltando um import, especificadamente o "doc", acabei esquecendo dele tambem.

import { doc, setDoc, collection, addDoc } from 'firebase/firestore';

Obrigado pela ajuda André!