const db = require('../models');
exports.findPost = async (req, res, next) => {
try {
const post = await db.Post.findOne({
where: {
id: parseInt(req.params.id, 10),
},
include: [
{
model: db.Post,
as: 'Retweet',
},
],
});
if (!post) {
return res.status(404).send('포스트를 찾지 못했습니다.');
}
req.findPost = post; // router에서 req.findPost를 사용할 수 있다.
next();
} catch (e) {
console.error(e);
next(e);
}
};
next()
전에 req.findPost = post
를 해줌으로서 다른 미들웨어나 router에서 req.findPost
를 사용할 수 있다.
const { findPost } = require('./middleware');
router.delete('/:id/like', findPost, async (req, res, next) => {
try {
await req.findPost.removeLiker(req.user.id); // req.findPost 사용 가능
res.json({ userId: req.user.id });
} catch (e) {
console.error(e);
next(e);
}
});