products.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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().populate('owner category').exec()
  29. res.json({
  30. success: true,
  31. products
  32. })
  33. } catch (err) {
  34. res.status(500).json({
  35. success: false,
  36. message: err.message
  37. })
  38. }
  39. })
  40. router.get('/products/:id', async (req, res) => {
  41. try {
  42. let product = await Product.findOne( { _id: req.params.id }).populate('owner category').exec()
  43. res.json({
  44. success: true,
  45. product
  46. })
  47. } catch (err) {
  48. res.status(500).json({
  49. success: false,
  50. message: err.message
  51. })
  52. }
  53. })
  54. router.put('/products/:id', upload.single('photo'), async (req, res) => {
  55. try {
  56. let product = await Product.findOneAndUpdate(
  57. { _id: req.params.id },
  58. {
  59. $set: {
  60. title: req.body.title,
  61. price: req.body.price,
  62. category: req.body.categoryID,
  63. description: req.body.description,
  64. photo: req.file.location,
  65. stockQuantity: req.body.stockQuantity,
  66. owner: req.body.ownerID
  67. }
  68. },
  69. { upsert: true }
  70. )
  71. res.json({
  72. success: true,
  73. updateProduct: product
  74. })
  75. } catch (err) {
  76. res.status(500).json({
  77. success: false,
  78. message: err.message
  79. })
  80. }
  81. })
  82. router.delete('/products/:id', async (req, res) => {
  83. try {
  84. let deleteProduct = await Product.findOneAndDelete( { _id: req.params.id })
  85. if (deleteProduct) {
  86. res.json({
  87. success: true,
  88. message: 'Successfully deleted'
  89. })
  90. }
  91. } catch (err) {
  92. res.status(500).json({
  93. success: false,
  94. message: err.message
  95. })
  96. }
  97. })
  98. module.exports = router