1
- const express = require ( ' express' ) ;
1
+ const express = require ( " express" ) ;
2
2
const router = express . Router ( ) ;
3
+ const mongoose = require ( "mongoose" ) ;
4
+
5
+ const Order = require ( "../models/order" ) ;
6
+ const Product = require ( "../models/product" ) ;
3
7
4
8
// Handle incoming GET requests to /orders
5
- router . get ( '/' , ( req , res , next ) => {
6
- res . status ( 200 ) . json ( {
7
- message : 'Orders were fetched'
9
+ router . get ( "/" , ( req , res , next ) => {
10
+ Order . find ( )
11
+ . select ( "product quantity _id" )
12
+ . exec ( )
13
+ . then ( docs => {
14
+ res . status ( 200 ) . json ( {
15
+ count : docs . length ,
16
+ orders : docs . map ( doc => {
17
+ return {
18
+ _id : doc . _id ,
19
+ product : doc . product ,
20
+ quantity : doc . quantity ,
21
+ request : {
22
+ type : "GET" ,
23
+ url : "http://localhost:3000/orders/" + doc . _id
24
+ }
25
+ } ;
26
+ } )
27
+ } ) ;
28
+ } )
29
+ . catch ( err => {
30
+ res . status ( 500 ) . json ( {
31
+ error : err
32
+ } ) ;
8
33
} ) ;
9
34
} ) ;
10
35
11
- router . post ( '/' , ( req , res , next ) => {
12
- const order = {
13
- productId : req . body . productId ,
14
- quantity : req . body . quantity
15
- } ;
16
- res . status ( 201 ) . json ( {
17
- message : 'Order was created' ,
18
- order : order
36
+ router . post ( "/" , ( req , res , next ) => {
37
+ Product . findById ( req . body . productId )
38
+ . then ( product => {
39
+ if ( ! product ) {
40
+ return res . status ( 404 ) . json ( {
41
+ message : "Product not found"
42
+ } ) ;
43
+ }
44
+ const order = new Order ( {
45
+ _id : mongoose . Types . ObjectId ( ) ,
46
+ quantity : req . body . quantity ,
47
+ product : req . body . productId
48
+ } ) ;
49
+ return order . save ( ) ;
50
+ } )
51
+ . then ( result => {
52
+ console . log ( result ) ;
53
+ res . status ( 201 ) . json ( {
54
+ message : "Order stored" ,
55
+ createdOrder : {
56
+ _id : result . _id ,
57
+ product : result . product ,
58
+ quantity : result . quantity
59
+ } ,
60
+ request : {
61
+ type : "GET" ,
62
+ url : "http://localhost:3000/orders/" + result . _id
63
+ }
64
+ } ) ;
65
+ } )
66
+ . catch ( err => {
67
+ console . log ( err ) ;
68
+ res . status ( 500 ) . json ( {
69
+ error : err
70
+ } ) ;
19
71
} ) ;
20
72
} ) ;
21
73
22
- router . get ( '/:orderId' , ( req , res , next ) => {
23
- res . status ( 200 ) . json ( {
24
- message : 'Order details' ,
25
- orderId : req . params . orderId
74
+ router . get ( "/:orderId" , ( req , res , next ) => {
75
+ Order . findById ( req . params . orderId )
76
+ . exec ( )
77
+ . then ( order => {
78
+ if ( ! order ) {
79
+ return res . status ( 404 ) . json ( {
80
+ message : "Order not found"
81
+ } ) ;
82
+ }
83
+ res . status ( 200 ) . json ( {
84
+ order : order ,
85
+ request : {
86
+ type : "GET" ,
87
+ url : "http://localhost:3000/orders"
88
+ }
89
+ } ) ;
90
+ } )
91
+ . catch ( err => {
92
+ res . status ( 500 ) . json ( {
93
+ error : err
94
+ } ) ;
26
95
} ) ;
27
96
} ) ;
28
97
29
- router . delete ( '/:orderId' , ( req , res , next ) => {
30
- res . status ( 200 ) . json ( {
31
- message : 'Order deleted' ,
32
- orderId : req . params . orderId
98
+ router . delete ( "/:orderId" , ( req , res , next ) => {
99
+ Order . remove ( { _id : req . params . orderId } )
100
+ . exec ( )
101
+ . then ( result => {
102
+ res . status ( 200 ) . json ( {
103
+ message : "Order deleted" ,
104
+ request : {
105
+ type : "POST" ,
106
+ url : "http://localhost:3000/orders" ,
107
+ body : { productId : "ID" , quantity : "Number" }
108
+ }
109
+ } ) ;
110
+ } )
111
+ . catch ( err => {
112
+ res . status ( 500 ) . json ( {
113
+ error : err
114
+ } ) ;
33
115
} ) ;
34
116
} ) ;
35
117
36
- module . exports = router ;
118
+ module . exports = router ;
0 commit comments