【发布时间】:2021-08-29 21:25:27
【问题描述】:
我目前是 Web 开发训练营的一员,我当前的项目要求我以我不理解的特定方式创建错误处理程序。下面是路线的截图。 . .
这是我目前的文件,希望它有意义。 . .
/* app.js */
const express = require('express');
const mongoose = require('mongoose');
const userRouter = require('./routes/users');
const cardRouter = require('./routes/cards');
const { PORT = 3000 } = process.env;
const app = express();
mongoose.connect('mongodb://localhost:27017/aroundb', {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true,
});
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
req.user = { _id: '60c4e0e2a80be4c8c2de5474' };
next();
});
app.use('/users', userRouter);
app.use('/cards', cardRouter);
app.listen(PORT, () => logMsg(`listening on port ${PORT} . . .`));
/* routes/users.js */
const express = require('express');
const { getUsers, getUser, createUser } = require('../controllers/users');
const router = express.Router();
router.get('/', getUsers);
router.get('/:id', getUser);
router.post('/', createUser);
module.exports = router;
/* controllers/users.js */
const User = require('../models/user');
module.exports.getUsers = (req, res) => {
User.find({})
.then((users) => res.status(200).send({ data: users }))
.catch((err) => res.status(500).send({ message: err }));
};
module.exports.getUser = (req, res, next) => {
User.findById(req.params.id)
.then((user) => res.send({ data: user }))
.catch((err) => res.status(404).send({ message: err }));
};
module.exports.createUser = (req, res) => {
const { name, about, avatar } = req.body;
User.create({ name, about, avatar })
.then((user) => res.status(201).send({ data: user }))
.catch((err) => res.status(400).send({ message: err }));
};
我的问题是:
- 提供的代码示例(在屏幕截图中)应该放在哪里?我是在创建单独的控制器或中间件吗?或者它可能进入已经编码的控制器中?
- 我会创建自己的错误并使用条件来阅读消息吗?
- 我已经认为我正在处理错误,如 controllers/users.js 中所示,不是这样吗?
注意:抱歉,我知道由于它来自课程,因此在课程上下文之外可能没有意义。我也知道可以通过多种方式对项目进行编码/解决。不幸的是,我的训练营没有现场指导,只是一个闲散的频道,97% 的回复来自校友。请不要犹豫,提出可能有助于澄清问题的问题。
【问题讨论】:
标签: mongodb express mongoose error-handling routes