Por favor ayuda. Lo intenté durante días, vi innumerables tutoriales y probé diferentes combinaciones de métodos en la documentación de Firebase, pero nada parecía funcionar.
Estoy creando un proyecto de chat de Vue y tratando de escribir datos en las bases de datos de Firebase. El código en mi firebase/init.js es el siguiente:
import { initializeApp } from "firebase/app"; import { getFirestore} from 'firebase/firestore'; const firebaseConfig = { apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXXX", authDomain: "XXXXXXXXXXXXXXXXXXXXXXXXXX", projectId: "XXXXXXXXXXXXXXXXXXXXXXXXXX", storageBucket: "XXXXXXXXXXXXXXXXXXXXXXXXXX", messagingSenderId: "XXXXXXXXXXXXXXXXXXXXXXXXXX", appId: "XXXXXXXXXXXXXXXXXXXXXXXXXX", measurementId: "XXXXXXXXXXXXXXXXXXXXXXXXXX" }; const app = initializeApp(firebaseConfig); const db = getFirestore(app); export default db;El código en mi archivo CreateMessage.vue es el siguiente:
<script> import {collection, addDoc} from "firebase/firestore"; export default { name: 'CreateMessage', props: ['name'], data() { return { newMessage: null, errorText: null } }, methods: { createMessage () { if (this.newMessage != "") { addDoc(collection(firestore, "messages"),{ message: this.newMessage, name: this.name, timestamp: Date.now() }); this.newMessage = null; this.errorText = null; } else { this.errorText = "A message must be entered first!"; } } } } </script>Cualquier ayuda sería muy apreciada. Muchas gracias a todos de antemano.
Lo único que está exportando desde su archivo init.js es db. Y nunca importa db en su componente. Debería importar así
import { db } from 'firebase/init.js
y luego agregue el documento ...
addDoc(collection(db, 'messages'), ...Alternativamente, no tiene que importar db. También podría importar getFirestore desde firebase/firestore y simplemente hacer...
addDoc(collection(getFirestore(), 'messages'), ...