Skip to content
Snippets Groups Projects
todo.js 2.29 KiB
Newer Older
const express = require('express');
const { model: ToDos } = require('../models/Todos');
const auth = require('../middlewares/auth');
const routes = express.Router();


routes.post('/todo/add', auth, async (req, res) => {
    const newTodo = req.body;
    const fieldsToAdd = Object.keys(newTodo);
    const fieldsInModel = ['title', 'description'];
    const isAdditionAllowed = fieldsToAdd.every((field) => fieldsInModel.includes(field));
        return res.status(400).send({ error: 'Invalid fields to Add!' });
    }

    try {
        const todo = await ToDos({
            ...newTodo,
            user: req.user._id,

routes.post('/todo/list', auth, async (req, res) => {
    try {

        const todos = await ToDos.find({
            user: req.user._id

routes.patch('/todo/update', auth, async (req, res) => {
    const changedTodo = req.body;
    const fieldsToUpdate = Object.keys(changedTodo);
    const fieldsInModel = ['_id', 'important', 'done'];
    const isUpdateAllowed = fieldsToUpdate.every((field) => fieldsInModel.includes(field));
        return res.status(400).send({ error: 'Invalid fields to update!' });
    if (changedTodo.hasOwnProperty('important')) {
        updateObj.important = changedTodo.important;
    if (changedTodo.hasOwnProperty('done')) {
        updateObj.done = changedTodo.done;
        const todo = await ToDos.findByIdAndUpdate(
            {
                _id: changedTodo._id,
                user: req.user._id,
            },
            { new: true, runValidators: true }
        );
        if (!todo) {
            return res.status(404).send();
        }

routes.delete('/todo/delete', auth, async (req, res) => {
    try {
        const todo = await ToDos.findById(req.body._id);
        await todo.remove();
        res.send(todo);