migrate-to-firestore/controllers/todocontroller.js (36 lines of code) (raw):

const bodyparser = require('body-parser'); const urlencodedparser = bodyparser.urlencoded({ extended: false}); const {Firestore} = require('@google-cloud/firestore'); const db = new Firestore(); module.exports = function(app) { app.get('/todo', async function(request, response) { try { const todos_output = await db.collection('todos').get(); const todos=todos_output.docs.map(doc=>({id: doc.id, item: doc.data().item})); response.render("todo", {todos}); } catch (error) { response.status(500).send(error.message); } }); app.post('/todo', urlencodedparser, async function(request, response) { const data = request.body; const newTodo = await db.collection('todos').add(data); response.json(newTodo); }); app.delete('/todo/:id', async function(request, response) { console.log(`DELETE /todo/${request.params.id}`) try { const itemDesc = request.params.id.replace('-', ' '); const snap = await db.collection('todos').where('item', '==', itemDesc).get(); if (!snap.empty) { for (const doc of snap.docs) { await doc.ref.delete(); }; } response.send('OK'); } catch (error) { console.error(error); response.status(500).send(error.message); } }); }