1- const express = require ( ' express' ) ;
1+ const express = require ( " express" ) ;
22const router = express . Router ( ) ;
3+ const mongoose = require ( "mongoose" ) ;
4+
5+ const Order = require ( "../models/order" ) ;
6+ const Product = require ( "../models/product" ) ;
37
48// 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+ } ) ;
833 } ) ;
934} ) ;
1035
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+ } ) ;
1971 } ) ;
2072} ) ;
2173
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+ } ) ;
2695 } ) ;
2796} ) ;
2897
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+ } ) ;
33115 } ) ;
34116} ) ;
35117
36- module . exports = router ;
118+ module . exports = router ;
0 commit comments