Showing
8 changed files
with
219 additions
and
0 deletions
.env
0 → 100644
models/lecture.js
0 → 100644
| 1 | +const mongoose = require('mongoose'); | ||
| 2 | + | ||
| 3 | +// Define Schemes | ||
| 4 | +const lectureSchema = new mongoose.Schema({ | ||
| 5 | + lectureid: { type: String, unique: true }, | ||
| 6 | + lecturename: { type: String}, | ||
| 7 | + proname: { type: String }, | ||
| 8 | + avg_rate: { type: Number } | ||
| 9 | +}); | ||
| 10 | + | ||
| 11 | +const reviewSchema = new mongoose.Schema({ | ||
| 12 | + lectureid: { type: String, required: true, unique: true }, | ||
| 13 | + review: { type: String, required: true } | ||
| 14 | +}); | ||
| 15 | + | ||
| 16 | +// // Create new lecture document | ||
| 17 | +lectureSchema.statics.create = function (payload) { | ||
| 18 | + // this === Model | ||
| 19 | + const lecture = new this(payload); | ||
| 20 | + // return Promise | ||
| 21 | + return lecture.save(); | ||
| 22 | +}; | ||
| 23 | + | ||
| 24 | +// Find All | ||
| 25 | +lectureSchema.statics.findAll = function () { | ||
| 26 | + // return promise | ||
| 27 | + // V4부터 exec() 필요없음 | ||
| 28 | + return this.find({}); | ||
| 29 | +}; | ||
| 30 | + | ||
| 31 | +// Find One by lectureid | ||
| 32 | +lectureSchema.statics.findOneBylectureid = function (lectureid) { | ||
| 33 | + return this.findOne({ lectureid }); | ||
| 34 | +}; | ||
| 35 | + | ||
| 36 | +// Update by lectureid | ||
| 37 | +lectureSchema.statics.updateBylectureid = function (lectureid, payload) { | ||
| 38 | + // { new: true }: return the modified document rather than the original. defaults to false | ||
| 39 | + return this.findOneAndUpdate({ lectureid }, payload, { new: true }); | ||
| 40 | +}; | ||
| 41 | + | ||
| 42 | +// Delete by lectureid | ||
| 43 | +lectureSchema.statics.deleteBylectureid = function (lectureid) { | ||
| 44 | + return this.remove({ lectureid }); | ||
| 45 | +}; | ||
| 46 | + | ||
| 47 | +// Create Model & Export | ||
| 48 | +module.exports = mongoose.model('Lecture', lectureSchema); |
models/review.js
0 → 100644
| 1 | +const mongoose = require('mongoose'); | ||
| 2 | + | ||
| 3 | + | ||
| 4 | +const reviewSchema = new mongoose.Schema({ | ||
| 5 | + lectureid: { type: String, required: true, unique: true }, | ||
| 6 | + review: { type: String, required: true } | ||
| 7 | +}); | ||
| 8 | + | ||
| 9 | +// // Create new review document | ||
| 10 | +reviewSchema.statics.create = function (payload) { | ||
| 11 | + // this === Model | ||
| 12 | + const review = new this(payload); | ||
| 13 | + // return Promise | ||
| 14 | + return review.save(); | ||
| 15 | +}; | ||
| 16 | + | ||
| 17 | +// Find All | ||
| 18 | +reviewSchema.statics.findAll = function () { | ||
| 19 | + // return promise | ||
| 20 | + // V4부터 exec() 필요없음 | ||
| 21 | + return this.find({}); | ||
| 22 | +}; | ||
| 23 | + | ||
| 24 | +// Find One by reviewid | ||
| 25 | +reviewSchema.statics.findOneByreviewid = function (reviewid) { | ||
| 26 | + return this.findOne({ reviewid }); | ||
| 27 | +}; | ||
| 28 | + | ||
| 29 | +// Update by reviewid | ||
| 30 | +reviewSchema.statics.updateByreviewid = function (reviewid, payload) { | ||
| 31 | + // { new: true }: return the modified document rather than the original. defaults to false | ||
| 32 | + return this.findOneAndUpdate({ reviewid }, payload, { new: true }); | ||
| 33 | +}; | ||
| 34 | + | ||
| 35 | +// Delete by reviewid | ||
| 36 | +reviewSchema.statics.deleteByreviewid = function (reviewid) { | ||
| 37 | + return this.remove({ reviewid }); | ||
| 38 | +}; | ||
| 39 | + | ||
| 40 | +// Create Model & Export | ||
| 41 | +module.exports = mongoose.model('Review', reviewSchema); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -177,6 +177,11 @@ | ... | @@ -177,6 +177,11 @@ |
| 177 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | 177 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
| 178 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | 178 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
| 179 | }, | 179 | }, |
| 180 | + "dotenv": { | ||
| 181 | + "version": "8.0.0", | ||
| 182 | + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.0.0.tgz", | ||
| 183 | + "integrity": "sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg==" | ||
| 184 | + }, | ||
| 180 | "ecc-jsbn": { | 185 | "ecc-jsbn": { |
| 181 | "version": "0.1.2", | 186 | "version": "0.1.2", |
| 182 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | 187 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", | ... | ... |
| ... | @@ -11,6 +11,7 @@ | ... | @@ -11,6 +11,7 @@ |
| 11 | "license": "ISC", | 11 | "license": "ISC", |
| 12 | "dependencies": { | 12 | "dependencies": { |
| 13 | "body-parser": "^1.19.0", | 13 | "body-parser": "^1.19.0", |
| 14 | + "dotenv": "^8.0.0", | ||
| 14 | "express": "^4.17.0", | 15 | "express": "^4.17.0", |
| 15 | "mongoose": "^5.5.11", | 16 | "mongoose": "^5.5.11", |
| 16 | "request": "^2.88.0" | 17 | "request": "^2.88.0" | ... | ... |
routes/lectures.js
0 → 100644
| 1 | +const router = require('express').Router(); | ||
| 2 | +const Lecture = require('../models/lecture'); | ||
| 3 | + | ||
| 4 | +// Find All | ||
| 5 | +router.get('/', (req, res) => { | ||
| 6 | + Lecture.findAll() | ||
| 7 | + .then((lectures) => { | ||
| 8 | + if (!lectures.length) return res.status(404).send({ err: 'Lecture not found' }); | ||
| 9 | + res.send(`find successfully: ${lectures}`); | ||
| 10 | + }) | ||
| 11 | + .catch(err => res.status(500).send(err)); | ||
| 12 | +}); | ||
| 13 | + | ||
| 14 | +// Find One by lectureid | ||
| 15 | +router.get('/lectureid/:lectureid', (req, res) => { | ||
| 16 | + Lecture.findOneBylectureid(req.params.lectureid) | ||
| 17 | + .then((lecture) => { | ||
| 18 | + if (!lecture) return res.status(404).send({ err: 'Lecture not found' }); | ||
| 19 | + res.send(`findOne successfully: ${lecture}`); | ||
| 20 | + }) | ||
| 21 | + .catch(err => res.status(500).send(err)); | ||
| 22 | +}); | ||
| 23 | + | ||
| 24 | +// Create new lecture document | ||
| 25 | +router.post('/', (req, res) => { | ||
| 26 | + console.log(req.body) | ||
| 27 | + Lecture.create(req.body) | ||
| 28 | + .then(lecture => res.send(lecture)) | ||
| 29 | + .catch(err => res.status(500).send(err)); | ||
| 30 | +}); | ||
| 31 | + | ||
| 32 | +// Update by lectureid | ||
| 33 | +router.put('/lectureid/:lectureid', (req, res) => { | ||
| 34 | + Lecture.updateBylectureid(req.params.lectureid, req.body) | ||
| 35 | + .then(lecture => res.send(lecture)) | ||
| 36 | + .catch(err => res.status(500).send(err)); | ||
| 37 | +}); | ||
| 38 | + | ||
| 39 | +// Delete by lectureid | ||
| 40 | +router.delete('/lectureid/:lectureid', (req, res) => { | ||
| 41 | + Lecture.deleteBylectureid(req.params.lectureid) | ||
| 42 | + .then(() => res.sendStatus(200)) | ||
| 43 | + .catch(err => res.status(500).send(err)); | ||
| 44 | +}); | ||
| 45 | + | ||
| 46 | +module.exports = router; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
routes/reviews.js
0 → 100644
| 1 | +const router = require('express').Router(); | ||
| 2 | +const Review = require('../models/review'); | ||
| 3 | + | ||
| 4 | +// Find All | ||
| 5 | +router.get('/', (req, res) => { | ||
| 6 | + Review.findAll() | ||
| 7 | + .then((reviews) => { | ||
| 8 | + if (!reviews.length) return res.status(404).send({ err: 'Review not found' }); | ||
| 9 | + res.send(`find successfully: ${reviews}`); | ||
| 10 | + }) | ||
| 11 | + .catch(err => res.status(500).send(err)); | ||
| 12 | +}); | ||
| 13 | + | ||
| 14 | +// Find One by reviewid | ||
| 15 | +router.get('/reviewid/:reviewid', (req, res) => { | ||
| 16 | + Review.findOneByreviewid(req.params.reviewid) | ||
| 17 | + .then((review) => { | ||
| 18 | + if (!review) return res.status(404).send({ err: 'Review not found' }); | ||
| 19 | + res.send(`findOne successfully: ${review}`); | ||
| 20 | + }) | ||
| 21 | + .catch(err => res.status(500).send(err)); | ||
| 22 | +}); | ||
| 23 | + | ||
| 24 | +// Create new review document | ||
| 25 | +router.post('/', (req, res) => { | ||
| 26 | + console.log(req.body) | ||
| 27 | + Review.create(req.body) | ||
| 28 | + .then(review => res.send(review)) | ||
| 29 | + .catch(err => res.status(500).send(err)); | ||
| 30 | +}); | ||
| 31 | + | ||
| 32 | +// Update by reviewid | ||
| 33 | +router.put('/reviewid/:reviewid', (req, res) => { | ||
| 34 | + Review.updateByreviewid(req.params.reviewid, req.body) | ||
| 35 | + .then(review => res.send(review)) | ||
| 36 | + .catch(err => res.status(500).send(err)); | ||
| 37 | +}); | ||
| 38 | + | ||
| 39 | +// Delete by reviewid | ||
| 40 | +router.delete('/reviewid/:reviewid', (req, res) => { | ||
| 41 | + Review.deleteByreviewid(req.params.reviewid) | ||
| 42 | + .then(() => res.sendStatus(200)) | ||
| 43 | + .catch(err => res.status(500).send(err)); | ||
| 44 | +}); | ||
| 45 | + | ||
| 46 | +module.exports = router; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
test.js
0 → 100644
| 1 | +// ENV | ||
| 2 | +require('dotenv').config(); | ||
| 3 | + | ||
| 4 | +// DEPENDENCIES | ||
| 5 | +const express = require('express'); | ||
| 6 | +const mongoose = require('mongoose'); | ||
| 7 | +const bodyParser = require('body-parser'); | ||
| 8 | + | ||
| 9 | +const app = express(); | ||
| 10 | +const port = process.env.PORT || 4500; | ||
| 11 | + | ||
| 12 | +// Static File Service | ||
| 13 | +app.use(express.static('public')); | ||
| 14 | +// Body-parser | ||
| 15 | +app.use(bodyParser.urlencoded({ extended: true })); | ||
| 16 | +app.use(bodyParser.json()); | ||
| 17 | + | ||
| 18 | +// Node의 native Promise 사용 | ||
| 19 | +mongoose.Promise = global.Promise; | ||
| 20 | + | ||
| 21 | +// Connect to MongoDB | ||
| 22 | +mongoose.connect(process.env.MONGO_URI) | ||
| 23 | + .then(() => console.log('Successfully connected to mongodb')) | ||
| 24 | + .catch(e => console.error(e)); | ||
| 25 | + | ||
| 26 | +// ROUTERS | ||
| 27 | +app.use('/lectures', require('./routes/lectures')); | ||
| 28 | +app.use('/reviews', require('./routes/reviews')); | ||
| 29 | +app.listen(port, () => console.log(`Server listening on port ${port}`)); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment