-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
67 lines (49 loc) · 1.55 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const express = require('express')
const app = express()
const mongoose = require('mongoose')
const Product = require('./models/product')
app.use(express.json())
mongoose.connect('mongodb://localhost:27017/Cats', { useNewUrlParser: true })
// สร้าง database schema
const Cat = mongoose.model('Cat', { name: String })
// สร้าง instance จาก model
const kitty = new Cat({ name: 'JavaScript' })
// save ลง database (return เป็น Promise)
kitty.save().then(() => console.log('meow'))
// mock data
const products = [{}]
mongoose.connection.on('error', err => {
console.error('MongoDB error', err)
})
app.post('/products', async (req, res) => {
const payload = req.body
const product = new Product(payload)
await product.save()
res.status(201).end()
})
app.get('/products', (req, res) => {
res.json(products)
})
app.get('/products/:id',async (req, res) => {
const { id } = req.params
const product = await Product.findById(id)
res.json(product)
})
app.post('/products', (req, res) => {
const payload = req.body
res.json(payload)
})
app.put('/products/:id', async (req, res) => {
const payload = req.body
const { id } = req.params
const product = await Product.findByIdAndUpdate(id, { $set: payload })
res.json(product)
})
app.delete('/products/:id',async (req, res) => {
const { id } = req.params
await Product.findByIdAndDelete(id)
res.status(204).end()
})
app.listen(9000, () => {
console.log('Application is running on port 9000')
})