products.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. const router = require('express').Router()
  2. const Product = require('../models/product')
  3. const upload = require('../middlewares/upload-photo')
  4. router.post('/products', upload.single('photo'), async (req, res)=> {
  5. try {
  6. let product = new Product()
  7. product.ownerID = req.body.ownerID
  8. product.categoryID = req.body.categoryID
  9. product.price = req.body.price
  10. product.title = req.body.title
  11. product.description = req.body.description
  12. product.photo = req.file.location
  13. product.stockQuantity = req.body.stockQuantity
  14. await product.save()
  15. res.json({
  16. status: true,
  17. message: 'Success saved'
  18. })
  19. } catch(err) {
  20. res.status(500).json({
  21. success: false,
  22. message: err.message
  23. })
  24. }
  25. })
  26. router.get('/products', async (req, res) => {
  27. try {
  28. let products = await Product.find()
  29. .populate('owner category')
  30. .populate('reviews', 'rating')
  31. .exec()
  32. res.json({
  33. success: true,
  34. products
  35. })
  36. } catch (err) {
  37. res.status(500).json({
  38. success: false,
  39. message: err.message
  40. })
  41. }
  42. })
  43. router.get('/products/:id', async (req, res) => {
  44. try {
  45. let product = await Product.findOne( { _id: req.params.id })
  46. .populate('owner category')
  47. .populate('reviews', 'rating')
  48. .exec()
  49. res.json({
  50. success: true,
  51. product
  52. })
  53. } catch (err) {
  54. res.status(500).json({
  55. success: false,
  56. message: err.message
  57. })
  58. }
  59. })
  60. router.put('/products/:id', upload.single('photo'), async (req, res) => {
  61. try {
  62. let product = await Product.findOneAndUpdate(
  63. { _id: req.params.id },
  64. {
  65. $set: {
  66. title: req.body.title,
  67. price: req.body.price,
  68. category: req.body.categoryID,
  69. description: req.body.description,
  70. photo: req.file.location,
  71. stockQuantity: req.body.stockQuantity,
  72. owner: req.body.ownerID
  73. }
  74. },
  75. { upsert: true }
  76. )
  77. res.json({
  78. success: true,
  79. updateProduct: product
  80. })
  81. } catch (err) {
  82. res.status(500).json({
  83. success: false,
  84. message: err.message
  85. })
  86. }
  87. })
  88. router.delete('/products/:id', async (req, res) => {
  89. try {
  90. let deleteProduct = await Product.findOneAndDelete( { _id: req.params.id })
  91. if (deleteProduct) {
  92. res.json({
  93. success: true,
  94. message: 'Successfully deleted'
  95. })
  96. }
  97. } catch (err) {
  98. res.status(500).json({
  99. success: false,
  100. message: err.message
  101. })
  102. }
  103. })
  104. module.exports = router