Skip to content

Commit 2d9b4a5

Browse files
clean up pyramid of doom with populate using mongoose
1 parent c1d63f8 commit 2d9b4a5

1 file changed

Lines changed: 9 additions & 25 deletions

File tree

src/routes/course.js

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,32 +23,16 @@ router.get('/', (req, res, next) => {
2323
});
2424

2525
router.get('/:courseId', (req, res, next) => {
26-
Course.findById(req.params.courseId, (err, course) => {
27-
Utils.isError(err, next);
28-
course.getUser((err1, user) => {
29-
Utils.isError(err1, next);
30-
course.user = user;
31-
let itemsProcessed = 0;
32-
course.reviews.forEach((courseReview, index, array) => {
33-
course.getReview(index, (err2, review) => {
34-
Utils.isError(err2, next);
35-
review.getUser((err3, reviewUser) => {
36-
Utils.isError(err3, next);
37-
review.user = reviewUser;
38-
course.reviews[index] = review;
39-
itemsProcessed++;
40-
if(itemsProcessed === array.length){
41-
res.locals.course = course;
42-
next();
43-
}
44-
});
45-
});
46-
});
26+
Course
27+
.findById(req.params.courseId)
28+
.populate('user')
29+
.populate('reviews')
30+
.exec((err, course) => {
31+
Utils.isError(err, next);
32+
res.locals.course = course;
33+
let status = 200;
34+
return res.status(status).json({success: true, message: "Course Successfully retrieved!", status: status, course: res.locals.course });
4735
});
48-
});
49-
}, (req, res) => {
50-
let status = 200;
51-
return res.status(status).json({success: true, message: "Course Successfully retrieved!", status: status, course: res.locals.course });
5236
});
5337

5438
router.post('/', authorizeUser, (req, res, next) => {

0 commit comments

Comments
 (0)