| @@ -1,6 +1,18 @@ | |||
| const Product = require('../../../models/product'); | |||
| import dbConnect from '../../../utils/helpers/dbHelpers'; | |||
| const shuffle = function (v) { | |||
| //+ Jonas Raoni Soares Silva | |||
| //@ http://jsfromhell.com/array/shuffle [rev. #1] | |||
| for ( | |||
| var j, x, i = v.length; | |||
| i; | |||
| j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x | |||
| ); | |||
| return v; | |||
| }; | |||
| async function handler(req, res) { | |||
| const { method } = req; | |||
| @@ -17,9 +29,19 @@ async function handler(req, res) { | |||
| throw new Error('The product with this id does not exist!'); | |||
| } | |||
| const similarProducts = await Product.find({ | |||
| category: product.category, | |||
| customID: { $ne: product.customID }, | |||
| }); | |||
| const shuffled = similarProducts | |||
| .sort(() => 0.5 - Math.random()) | |||
| .slice(0, 3); | |||
| res.status(200).json({ | |||
| message: 'The product you requested was fetched successfully.', | |||
| product, | |||
| similarProducts: shuffled, | |||
| }); | |||
| } catch (error) { | |||
| res.status(400).json({ message: error.message }); | |||