Я пытался разделить свои маршруты и методы промежуточного программного обеспечения в моем бэкэнд-API, и мне не нравится моя функция удаления ... Я получаю
Route.delete () требует функцию обратного вызова но получил [объект Undefined]
ошибка. Если я прокомментирую строку
.delete (deleteBootcamp);
, все остальные мои функции будут работать правильно. (моя функция удаления работала также до того, как a начал разделять маршруты ...)
Мой код:
server. js
const express = require('express');
const dotenv = require('dotenv');
//route files
const bootcamps = require('./routes/bootcamps');
//load env files
dotenv.config({ path: './config/config.env' });
const app = express();
//mount routers
app.use('/api/v1/bootcamps', bootcamps);
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server running on ${process.env.NODE_ENV} mode on port ${PORT}`));
routs> bootcamps. js
const express = require('express');
/*
const getBootcamps = require('../controllers/bootcamps');
const getBootcamp = require('../controllers/bootcamps');
const updateBootcamp = require('../controllers/bootcamps');
const addBootcamp = require('../controllers/bootcamps');
const deleteBootcamp = require('../controllers/bootcamps');
*/
const {
getBootcamps,
getBootcamp,
updateBootcamp,
addBootcamp,
deleteBootcamp
} = require('../controllers/bootcamps');
const router = express.Router();
router
.route('/')
.get(getBootcamps)
.post(addBootcamp);
router
.route('/:id')
.get(getBootcamp)
.put(updateBootcamp)
.delete(deleteBootcamp); // thats where he is crying...
module.exports = router;
контроллеры> bootcamps. js
//@desc Get all bootcamps
//@route /api/v1/bootcamps
//@access Public
exports.getBootcamps = (req, res, next) => {
res.status(200).json({succes: "true", msg: "Show all bootcamps"});
}
//@desc Get a single bootcamp
//@route /api/v1/bootcamp/:id
//@access Public
exports.getBootcamp = (req, res, next) => {
res.status(200).json({ succes: "true", msg: `Show bootcam ${req.params.id}` });
}
//@desc Update bootcamp
//@route /api/v1/bootcamps/:id
//@access Private
exports.updateBootcamp = (req, res, next) => {
res.status(200).json({ succes: "true", msg: `Bootcamp ${req.params.id} updated` });
}
//@desc Add bootcamp
//@route /api/v1/bootcamps/:id
//@access Private
exports.addBootcamp = (req, res, next) => {
res.status(200).json({ succes: "true", msg: "Bootcamp added" });
}
//@desc Delete bootcamp
//@route /api/v1/bootcamps/:id
//@access Private
exports.deleteBootcamps = (req, res, next) => {
res.status(200).json({ succes: "true", msg: `Bootcamp ${req.params.id} deleted` });
}