Skip to content

Instantly share code, notes, and snippets.

@Ciaanh

Ciaanh/server.js Secret

Created December 12, 2021 23:21
Show Gist options
  • Save Ciaanh/5439f481d61ca053dc0a124841c07578 to your computer and use it in GitHub Desktop.
Save Ciaanh/5439f481d61ca053dc0a124841c07578 to your computer and use it in GitHub Desktop.
Server with Express
require("dotenv").config();
const express = require("express");
const ReadPreference = require("mongodb").ReadPreference;
const mongoose = require("mongoose");
const cors = require("cors");
const path = require("path");
const { DB_CONN } = process.env;
const api = express();
api.use(cors());
api.use(express.json());
api.use(express.urlencoded({ extended: false }));
mongoose
.connect(DB_CONN, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log("DB connection successful"))
.catch(console.error);
const ToDoModel = mongoose.model(
"todo",
new mongoose.Schema({
isDone: Boolean,
text: String,
})
);
api.get("/todo/all", (req, res) => {
ToDoModel.find({})
.read(ReadPreference.NEAREST)
.exec()
.then((todos) => {
res.json(todos);
})
.catch((err) => {
res.status(400).send(err);
});
});
api.post("/todo", (req, res) => {
const { todo } = req.body;
todo._id = new mongoose.Types.ObjectId();
const newTodo = new ToDoModel(todo);
newTodo
.save()
.then((newTodo) => {
res.json(newTodo);
})
.catch((err) => {
res.status(400).send(err);
});
});
api.put("/todo/:id", (req, res) => {
const { id } = req.params;
if (id) {
ToDoModel.findById(id)
.read(ReadPreference.NEAREST)
.exec()
.then((todo) => {
todo.isDone = !todo.isDone;
todo.save().then((updatedTodo) => {
res.json(updatedTodo);
});
})
.catch((err) => {
res.status(400).send(err);
});
} else {
res.status(404).send("ToDo not found.");
}
});
api.delete("/todo/:id", (req, res) => {
const { id } = req.params;
if (id) {
ToDoModel.findByIdAndRemove(id)
.then((todo) => {
res.json(todo._id);
})
.catch((err) => {
res.status(400).send(err);
});
}
});
api.use(express.static(path.join(__dirname, "client", "build")));
api.get("/*", (req, res) => {
res.sendFile(path.join(__dirname, "client", "build", "index.html"));
});
const port = process.env.PORT || 5000;
api.listen(port);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment