diff --git a/models/forms/deletebanners.js b/models/forms/deletebanners.js index 84224289..2d4ba234 100644 --- a/models/forms/deletebanners.js +++ b/models/forms/deletebanners.js @@ -9,7 +9,7 @@ module.exports = async (req, res, next) => { const redirect = `/${req.params.board}/manage.html` await Promise.all(req.body.checkedbanners.map(async filename => { - remove(`${uploadDirectory}banner/${filename}`); + remove(`${uploadDirectory}banner/${req.params.board}/${filename}`); })); await Boards.removeBanners(req.params.board, req.body.checkedbanners); diff --git a/models/pages/banners.js b/models/pages/banners.js index c3ff2e5f..33c36290 100644 --- a/models/pages/banners.js +++ b/models/pages/banners.js @@ -8,21 +8,20 @@ module.exports = async (req, res, next) => { return next(); } - // get all threads - let board; - try { - board = await Boards.findOne(req.query.board); - } catch (err) { - return next(err); - } - - if (!board) { - return next(); - } - - if (board.banners.length > 0) { - const randomBanner = board.banners[Math.floor(Math.random()*board.banners.length)]; - return res.redirect(`/banner/${req.query.board}/${randomBanner}`); + //agregate to get single random item from banners array + const board = await Boards.db.aggregate([ + { + '$unwind': '$banners' + }, + { + '$sample': { + 'size' : 1 + } + } + ]).toArray().then(res => res[0]); + + if (board && board.banners != null) { + return res.redirect(`/banner/${req.query.board}/${board.banners}`); } return res.redirect('/img/defaultbanner.png');