学习一个项目的源码,看到作者有以下代码:
exports.loadQuestions = async (req, res, next, id) => {
try {
const question = await Question.findById(id);
if (!question) return res.status(404).json({ message: 'Question not found.' });
req.question = question;
} catch (error) {
if (error.name === 'CastError')
return res.status(400).json({ message: 'Invalid question id.' });
return next(error);
}
next();
};
exports.createQuestion = async (req, res, next) => {
const result = validationResult(req);
if (!result.isEmpty()) {
const errors = result.array({ onlyFirstError: true });
return res.status(422).json({ errors });
}
try {
const { title, tags, text } = req.body;
const author = req.user.id;
const question = await Question.create({
title,
author,
tags,
text
});
res.status(201).json(question);
} catch (error) {
next(error);
}
};
loadQuestions返回客户端json数据采用的方法是
req.question = question;
createQuestion返回客户端json数据采用的方法是
res.status(201).json(question);
第二种方式容易理解,第一种是什么意思呢?
将数据库里查询到的数据复制给req.question,后面调用next(),就会自动转为json并回应给客户端么?
可能是一个小白问题,哪位大牛不吝解答以下,万分感谢。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…