1- const express = require ( 'express' ) ,
2- mongoose = require ( 'mongoose' ) ,
3- bodyParser = require ( 'body-parser' ) ,
4- cors = require ( 'cors' ) ,
5- app = express ( ) ;
1+ const Topic = require ( "./models/topics" ) ;
2+ const express = require ( "express" ) ,
3+ mongoose = require ( "mongoose" ) ,
4+ bodyParser = require ( "body-parser" ) ,
5+ cors = require ( "cors" ) ,
6+ app = express ( ) ;
67
78//configure CORS
89app . use ( cors ( ) ) ;
@@ -13,47 +14,64 @@ app.use(bodyParser.json());
1314
1415const port = process . env . PORT || 8080 ;
1516
16- mongoose . connect ( 'mongodb://mongodb:27017' , err => {
17- if ( err )
18- throw err ;
19- console . log ( 'Connected to mongodb' ) ;
20- } ) ;
17+ const delay = ( ) =>
18+ new Promise ( ( res ) => {
19+ setTimeout ( ( ) => {
20+ res ( ) ;
21+ } , 1000 ) ;
22+ } ) ;
2123
22- //mongoDB service
23- var Topic = require ( './models/topics' ) ;
24+ const connect = async ( ) => {
25+ await delay ( ) ;
26+ try {
27+ await mongoose . connect ( "mongodb://mongodb:27017/test" ) ;
28+ console . log ( "connected to test" ) ;
29+ } catch ( error ) {
30+ console . error ( error ) ;
31+ }
32+ } ;
2433
2534//Routes
26- var router = express . Router ( ) ;
27-
28- router . post ( '/topics' , ( req , res ) => {
29- console . log ( '[POST] Topics' ) ;
35+ const router = express . Router ( ) ;
3036
31- var topic = new Topic ( ) ;
32- topic . name = req . body . name ;
37+ router . post ( "/topics" , async ( req , res ) => {
38+ console . log ( "[POST] Topics" ) ;
3339
34- topic . save ( err => {
35- if ( err )
36- res . send ( err ) ;
40+ const topic = new Topic ( ) ;
41+ topic . name = req . body . name ;
3742
38- res . json ( { message : 'Topic created!' } ) ;
39- } ) ;
43+ try {
44+ const result = await topic . save ( ) ;
45+ console . log ( result ) ;
46+ res . send ( result ) ;
47+ } catch ( error ) {
48+ console . error ( error ) ;
49+ res . send ( JSON . parse ( error ) ) ;
50+ }
4051} ) ;
4152
42- router . get ( '/topics' , ( req , res ) => {
43- console . log ( '[GET] Topics' ) ;
53+ router . get ( "/topics" , async ( _ , res ) => {
54+ console . log ( "[GET] Topics" ) ;
55+ console . log ( Topic ) ;
4456
45- Topic . find ( ( err , topics ) => {
46- if ( err )
47- res . send ( err ) ;
48-
49- res . json ( topics ) ;
50- } ) ;
57+ try {
58+ const collection = await Topic . find ( { } ) ;
59+ const topics = collection . map ( ( t ) => ( {
60+ id : t . _id . toString ( ) ,
61+ name : t . name ,
62+ } ) ) ;
63+ res . send ( topics ) ;
64+ } catch ( error ) {
65+ console . error ( err ) ;
66+ res . send ( JSON . parse ( error ) ) ;
67+ }
5168} ) ;
5269
5370//all routes will be prefixed with /api
54- app . use ( ' /api' , router ) ;
71+ app . use ( " /api" , router ) ;
5572
5673//start the server
57- app . listen ( port , ( ) => {
58- console . log ( `Server up and running on port ${ port } ` ) ;
59- } ) ;
74+ app . listen ( port , async ( ) => {
75+ console . log ( `Server up and running on port ${ port } ` ) ;
76+ await connect ( ) ;
77+ } ) ;
0 commit comments