2
respostas

[Dúvida] Erro: [FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore]

Estou na aula onde faõ o cadastro de produtos. No meu contexto, lojas. Fiz igual a aula, mas recebo este erro:

[FirebaseError: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore]

Meu services > firestore.js:

import {db} from "../services/firestore"; import {collection, addDoc} from "firebase/firestore";

export async function salvarLoja(data) {

try {
    await addDoc(collection(db, "lojas"), data);
    return "Sucesso"

} catch (error) {
    console.log("Erro ao cadastrar loja: ", error);
    return "Erro"
}

}

E a funcção dentro da página que contém o input e o botão:

async function cadastrarLoja() { const resultado = await salvarLoja({ nome: nome, endereco: endereco, ref: ref, telefone: telefone, whatsapp: whatsapp, });

    if (resultado === "Sucesso") {
        navigation.navigate('Login');
    } else {
        Alert.alert("Erro ao cadastrar loja");
    }
}

Botão que chama a funcção:

<TouchableOpacity style={styles.button} onPress={() => {cadastrarLoja()}}> Registrar

2 respostas

Olá, Vanessa!

Pelo que você descreveu, parece que o erro está ocorrendo porque a função collection() do Firebase está esperando um argumento que seja uma referência para uma coleção, um documento ou uma instância do Firestore, mas não está recebendo.

No seu código, você está importando o db de ../services/firestore, que eu suponho que seja a instância do Firestore. Então, a linha onde você chama a função collection parece correta:

await addDoc(collection(db, "lojas"), data);

No entanto, o erro sugere que db não é uma instância válida do Firestore. Você poderia verificar a exportação do db em ../services/firestore? Ele deve ser inicializado assim:

import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';

const firebaseConfig = {
  // seu configuração do Firebase
};

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

export { db };

Se o db estiver sendo exportado corretamente, o problema pode estar no momento em que você está tentando acessar a coleção. Talvez o Firestore ainda não esteja totalmente inicializado quando você tenta adicionar um documento à coleção. Nesse caso, você pode tentar adicionar algum código para aguardar a inicialização do Firestore antes de tentar acessar a coleção.

São só sugestões, espero que ajudem a resolver o problema.

Espero ter ajudado e bons estudos!

Meu código está correto, de acordo com o seu. Fiz o que sugeriu, mas nada. Continuo recebendo o mesmo erro!

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