-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
57 lines (47 loc) · 1.34 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const express = require('express');
const mongoose = require('mongoose');
const Todo = require('./Models/Todo');
const cors = require('cors');
require('dotenv').config();
const app = express();
const port = 3000;
// Enable CORS
app.use(cors());
// Enable JSON parsing
app.use(express.json());
// MongoDB connection
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected'))
.catch(err => console.log(err));
// Create a new todo
app.post('/todos_create', async (req, res) => {
const newTodo = new Todo(req.body);
await newTodo.save();
res.status(201).json(newTodo);
});
// Get all todos
app.get('/todos', async (req, res) => {
const todos = await Todo.find();
res.json(todos);
});
// Get a single todo by ID
app.get('/todos/:id', async (req, res) => {
const todo = await Todo.findById(req.params.id);
res.json(todo);
});
// Update a todo by ID
app.put('/todos/:id', async (req, res) => {
const updatedTodo = await Todo.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.json(updatedTodo);
});
// Delete a todo by ID
app.delete('/todos/:id', async (req, res) => {
await Todo.findByIdAndDelete(req.params.id);
res.json({ message: 'Todo deleted' });
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});