What I need to do is hit edit button, display the edit page, save the edits and render the changes. I am stuck in saving the changes, I get error 304 in mongodb. I am using front end and back end. Currently it loads the edit page but once I hit save changes the database connection is lost.
Back end, this is the controller:
import { RequestHandler } from "express";
import { Coffee, ICoffee } from "../models/coffee";
import { IUser } from "../models/user";
import { verifyUser } from "../services/auth";
export const getAllCoffee: RequestHandler = async (req, res, next) => {
let coffeeList = await Coffee.find();
res.status(200).json(coffeeList);
}
export const getOneCoffee: RequestHandler = async (req, res, next) => {
let itemId = req.params.id;
let coffee = await Coffee.findById(itemId);
res.status(200).json(coffee);
}
export const addCoffee: RequestHandler = async (req, res, next) => {
let user: IUser | null = await verifyUser(req);
if (!user) {
return res.status(403).send();
}
const newCoffee: ICoffee = new Coffee({
name: req.body.name,
description: req.body.description,
price: req.body.price
});
try {
await newCoffee.save();
res.status(201).json(newCoffee);
}
catch (err) {
res.status(500).send(err);
}
}
export const editCoffee: RequestHandler = async (req, res, next) => {
let user: IUser | null = await verifyUser(req);
if (!user) {
return res.status(403).send();
}
let itemId = req.params.id;
const updatedCoffee = {
name: req.body.name,
description: req.body.description,
price: req.body.price,
};
res.json(
await Coffee.findByIdAndUpdate(itemId, updatedCoffee, {
returnDocument: "after",
})
);
Coffee.ts:
import { Document, Schema, Model, model } from 'mongoose';
interface ICoffee extends Document {
name: string;
description: string;
price: number;
}
const coffeeSchema: Schema = new Schema({
name: {
type: String,
required: true,
unique: true
},
description: {
type: String,
required: true
},
price: {
type: Number,
required: true
}
});
const Coffee: Model<ICoffee> = model<ICoffee>('Coffee', coffeeSchema);
export { ICoffee, Coffee };
CoffeeRoutes.ts:
import { Router } from 'express';
import { addCoffee, editCoffee, deleteCoffee, getAllCoffee, getOneCoffee } from '../controllers/coffeeController';
const router = Router();
router.get('/', getAllCoffee);
router.get('/:id', getOneCoffee);
router.post('/', addCoffee);
router.put('/:id', editCoffee);
router.delete('/:id', deleteCoffee);
export default router;
Can anybody help me, please? Thanks!