renamed
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
require("dotenv").config();
|
||||
const express = require("express");
|
||||
const cors = require("cors");
|
||||
const morgan = require("morgan");
|
||||
const Person = require("./models/person");
|
||||
|
||||
const app = express();
|
||||
|
||||
const errorHandler = (error, req, res, next) => {
|
||||
console.log(err.message);
|
||||
if (err.name === "CastError")
|
||||
return res.status(404).send({ error: "malformatted id" });
|
||||
else if (err.name === "ValidationError")
|
||||
return res.status(400).json({ error: err.message });
|
||||
next(err);
|
||||
};
|
||||
|
||||
morgan.token("type", function (req, res) {
|
||||
return String(JSON.stringify(req.body));
|
||||
});
|
||||
// middleware to deal with same origin
|
||||
app.use(cors());
|
||||
// middleware to allow express to deliver html
|
||||
// it is unclear to me why i cant just make a get method that deals with that
|
||||
app.use(express.static("build"));
|
||||
// transfprms it to jsontransfprms it to json
|
||||
app.use(express.json());
|
||||
// adding additional information on request
|
||||
app.use(
|
||||
morgan(":method :url :status :res[content-length] - :response-time ms :type")
|
||||
);
|
||||
app.use(errorHandler);
|
||||
|
||||
app.get("/api/persons", (req, res, next) => {
|
||||
Person.find({})
|
||||
.then((persons) => {
|
||||
res.json(persons);
|
||||
})
|
||||
.catch((err) => next(err));
|
||||
});
|
||||
/* currently not used
|
||||
const date = new Date();
|
||||
app.get("/api/info", (req, res) => {
|
||||
res.send(`Phonebook has info for ${data.length} persons <br />${date}`);
|
||||
});
|
||||
*/
|
||||
app.get("/api/persons/:id", (req, res, next) => {
|
||||
Person.findById(req.params.id)
|
||||
.then((person) => {
|
||||
if (person) res.json(person);
|
||||
else res.status(404).end();
|
||||
})
|
||||
.catch((err) => next(err));
|
||||
});
|
||||
app.post("/api/persons", (req, res, next) => {
|
||||
const body = req.body;
|
||||
const person = new Person({
|
||||
name: body.name,
|
||||
number: body.number,
|
||||
id: Math.floor(Math.random() * 1000),
|
||||
});
|
||||
person
|
||||
.save()
|
||||
.then((savedPerson) => {
|
||||
res.json(savedPerson);
|
||||
})
|
||||
.catch((err) => next(err));
|
||||
});
|
||||
app.put("/api/persons/:id", (req, res, next) => {
|
||||
const { name, number } = req.body;
|
||||
Person.findOneAndUpdate(
|
||||
{ id: req.params.id },
|
||||
{ name, number },
|
||||
{ new: true, runValidators: true, context: "query" }
|
||||
)
|
||||
.then((updatedPerson) => {
|
||||
res.json(updatedPerson);
|
||||
})
|
||||
.catch((err) => next(err));
|
||||
});
|
||||
app.delete("/api/persons/:id", (req, res, next) => {
|
||||
Person.findByIdAndRemove(req.params.id)
|
||||
.then((result) => {
|
||||
console.log("result:", result);
|
||||
res.status(204).end();
|
||||
})
|
||||
.catch((err) => next(err));
|
||||
});
|
||||
|
||||
const PORT = process.env.PORT || 3001;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server running on port ${PORT}`);
|
||||
});
|
||||
Reference in New Issue
Block a user