Selaa lähdekoodia

review 스키마 생성 및 POST ,GET API 추가

kiboky 5 vuotta sitten
vanhempi
commit
2a20e3fc14
4 muutettua tiedostoa jossa 73 lisäystä ja 1 poistoa
  1. 1 1
      server/models/product.js
  2. 13 0
      server/models/review.js
  3. 56 0
      server/routes/review.js
  4. 3 0
      server/server.js

+ 1 - 1
server/models/product.js

@@ -9,7 +9,7 @@ const ProductSchema = new Schema({
   photo: String,
   price: Number,
   stockQuantity: Number,
-  rating: [Number]
+  rating: [{ type:Schema.Types.ObjectId, ref: 'Review' }]
 })
 
 module.exports = mongoose.model('Product', ProductSchema)

+ 13 - 0
server/models/review.js

@@ -0,0 +1,13 @@
+const mongoose = require('mongoose')
+const Schema = mongoose.Schema
+
+const ReviewSchema = new Schema({
+  headline: String,
+  body: String,
+  rating: Number,
+  photo: String,
+  productID: { type:Schema.Types.ObjectId, ref: 'Product' },
+  user: { type:Schema.Types.ObjectId, ref: 'User' },
+})
+
+module.exports = mongoose.model('Review', ReviewSchema)

+ 56 - 0
server/routes/review.js

@@ -0,0 +1,56 @@
+const router = require('express').Router()
+const Review = require('../models/review')
+const Product = require('../models/product')
+const virifyToken = require('../middlewares/verify-token')
+const upload = require('../middlewares/upload-photo')
+
+router.post('/reviews/:productID', [virifyToken, upload.single('photo')], async (req, res) => {
+  try {
+    const review = new Review()
+    review.headline =  req.body.headline
+    review.body =  req.body.body
+    review.rating =  req.body.rating
+    review.photo =  req.file.location
+    review.productID =  req.params.productID
+    review.user =  req.decoded._id
+
+    await Product.update({ $push: review._id })
+
+    const saveReviews = await review.save()
+
+    if (saveReviews) {
+      res.json({
+        success: true,
+        message: 'Successfully Added Review'
+      })
+    }
+  } catch (err) {
+    res.status(500).json({
+      success: false,
+      message: err.message
+    })
+  }
+})
+
+router.get('/reviews/:productID', async(req, res) => {
+  try {
+    const productReviews = await Review.find({
+      productID: req.params.productID
+    })
+      .populate('user')
+      .exec()
+    
+    res.json({
+      success: true,
+      message: productReviews
+    })
+  } catch (err) {
+    res.status(500).json({
+      success: false,
+      message: err.message
+    })
+  }
+
+})
+
+module.exports = router

+ 3 - 0
server/server.js

@@ -29,12 +29,15 @@ const productRouters = require('./routes/products')
 const categoryRouters = require('./routes/category')
 const ownerRouters = require('./routes/owner')
 const userRouters = require('./routes/auth')
+const reviewRouters = require('./routes/review')
+
 
 
 app.use('/api', productRouters)
 app.use('/api', categoryRouters)
 app.use('/api', ownerRouters)
 app.use('/api', userRouters)
+app.use('/api', reviewRouters)
 
 app.listen(3000, (err) => {
   if (err) {