diff --git a/server/app.js b/server/app.js index a7ae913..c1be488 100644 --- a/server/app.js +++ b/server/app.js @@ -19,7 +19,7 @@ app.use(express.json()); // app.use(express.urlencoded()); router.get('/products', productsController.allProducts) -router.get('/product/:id', productsController.productById) +router.get('/product/:slug', productsController.productBySlug) router.post('/product', productsController.addNewProduct) router.post('/variation/:id', variationsController.addNewVariationToProduct); diff --git a/server/controllers/product.js b/server/controllers/product.js index 4012fc2..b2d8ca7 100644 --- a/server/controllers/product.js +++ b/server/controllers/product.js @@ -24,17 +24,17 @@ const allProducts = (req, res) => { .then(products => res.json(products)) } -const productById = (req, res) => { - const { id } = req.params; +const productBySlug = (req, res) => { + const { slug } = req.params; - if (id != null) { - return products.getById(id) - .then(product => handleReturnProduct(product, res)) + if (slug != null) { + return products.getBySlug(slug) + .then(product => res.json({ ...product._doc })) .catch(err => handleError(err, res)) } else { return res.status(422).send({ success: true, - message: 'Id must be number. Invalid request.' + message: 'Product slug name must be included. Invalid request.' }) } } @@ -48,6 +48,6 @@ const addNewProduct = (req, res) => { module.exports = { allProducts, - productById, + productBySlug, addNewProduct }; diff --git a/server/src/products.js b/server/src/products.js index 57da21c..7d34c77 100644 --- a/server/src/products.js +++ b/server/src/products.js @@ -29,8 +29,8 @@ class Products { return Product.find().populate('variations'); } - getById(id) { - return Product.findById(id).populate('variations'); + getBySlug(slug) { + return Product.findOne({ urlSlug: slug }).populate('variations'); } }