From f525bb499e6dd99d2a50f6a117f5cd62ccf6b4ea Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Tue, 21 Jul 2020 13:03:12 +0200 Subject: [PATCH] Use slug for searching specific product. --- server/app.js | 2 +- server/controllers/product.js | 14 +++++++------- server/src/products.js | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) 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'); } }