Node.js: Не удается отделить методы промежуточного программного обеспечения от маршрутов - PullRequest
0 голосов
/ 29 февраля 2020

Я пытался разделить свои маршруты и методы промежуточного программного обеспечения в моем бэкэнд-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` });
}

1 Ответ

1 голос
/ 29 февраля 2020

имя неверное, я думаю deleteBootcamps в импорте

  ...

  deleteBootcamps

} = require('../controllers/bootcamps');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...