Below is the working code for firebase functions crud of notes application that works in firebase emulator can be started with below given command
firebase emulators:start
Below is a sample app -
To start follow below document -
https://firebase.google.com/docs/cli
Then take below functions code for reference -
index.js
import { https, logger } from 'firebase-functions'; import { initializeApp, applicationDefault, cert } from 'firebase-admin/app'; import { getFirestore, Timestamp, FieldValue } from 'firebase-admin/firestore'; import { getNotes, // getNote, // updateNote, // deleteNote, // createNote, } from './app/notes.js' initializeApp(); const db = getFirestore(); export const notes = https.onRequest( async (req, res) => { // const auth = getAuth(app); // const db = getFirestore(); let result; switch(req.method){ case "GET": if(req.url && req.url!=="/"){ const id = req.url.split("/").pop(); logger.info(`id ${id}`, {structuredData: true}); return await getNote({req, db, res, id}) // break; } return getNotes({req, db, res}) // break; case "POST": result = createNote({req, db, res}) break; case "DELETE": result = deleteNote({req, db, res}) break; case "PUT": result = updateNote({req, db, res}) break; } logger.info(`request ${request.method} not found`, {structuredData: true}); res.status(404).send(''); });
Notes.js
// import { logger } from 'firebase-functions'; import { collection, query, where, getDocs } from "firebase/firestore"; export const getNote = async ({req, db, id, res}) => { const docRef = db.collection('notes').doc(id); // logger.info(`id ${id}`, {structuredData: true}); try { const doc = await docRef.get(); if (!doc.exists) { console.log('No such document!'); return res.status(404).send('Not found'); } else { console.log('Document data:', doc.data()); return res.status(200).send(doc.data()); } } catch (err) { console.log('Error getting document', err); return res.status(500).send('Server error'); } } export const getNotes = async ({req, res, db}) => { try{ let result = [] const snapshot = await db.collection('notes').where('uid', '==', "1").get(); snapshot.forEach((doc) => result.push(doc.data())); console.log("result-->",result); res.send(result) } catch (err) { console.log('Error getting document', err); return res.status(500).send('Server error'); } } // export const createNote = () => { // const docRef = db.collection('notes').doc('123456'); // await docRef.set({ // uid: '1', // text: 'Lovelace', // }); // } // export const deleteNote = () => { // return "deleteNote" // } // export const updateNote = () => { // return "updateNote" // }