diff --git a/app.js b/app.js index 5248aae..805a81a 100644 --- a/app.js +++ b/app.js @@ -23,11 +23,12 @@ app.use( express.static( path.join( __dirname, '../front_end/public' ))) app.use( express.static( path.join( __dirname, 'public' ))) +app.use ( cors ) + app.use( '/api/v1/dashboards', api.dashboards ) app.use( '/api/v1/users', api.users ) app.use( '/api/v1/widget_specifications', api.widget_specifications ) -app.use ( cors ) // catch 404 and forward to error handler app.use( function( req, res, next ) { diff --git a/bin/www b/bin/www index 1b2745f..75bb578 100755 --- a/bin/www +++ b/bin/www @@ -92,4 +92,4 @@ function onListening() { ? 'pipe ' + addr : 'port ' + addr.port debug('Listening on ' + bind) -} \ No newline at end of file +} diff --git a/models/dashboards.js b/models/dashboards.js index 1c14bff..394f47e 100644 --- a/models/dashboards.js +++ b/models/dashboards.js @@ -1,6 +1,7 @@ const mongoose = require('mongoose') const { Schema } = mongoose const User = require('./users') +const { WidgetSchema } = require('./widgets') const DashboardSchema = new Schema ({ name: { type: String, required: true, default: 'Company Dashboard' }, @@ -10,6 +11,7 @@ const DashboardSchema = new Schema ({ responsive: { type: Boolean, required: true, default: true }, created_at: { type: Date, required: true, default: Date.now }, users: [{ type: Schema.Types.ObjectId, ref:'User' }], + widgets: [ WidgetSchema ] }) const Dashboard = mongoose.model('Dashboard', DashboardSchema) diff --git a/models/widgets.js b/models/widgets.js index 3296d96..6ba6da9 100644 --- a/models/widgets.js +++ b/models/widgets.js @@ -1,8 +1,8 @@ const mongoose = require( 'mongoose' ) const { Schema } = mongoose -const WidgetSchema = new Schema({}) +const WidgetSchema = new Schema({}, {strict: false}) const Widget = mongoose.model( 'Widget', WidgetSchema ) -module.exports = Widget +module.exports = { Widget, WidgetSchema } diff --git a/routes/api/v1/dashboard/addWidget.js b/routes/api/v1/dashboard/addWidget.js index bfa3790..70fabbb 100644 --- a/routes/api/v1/dashboard/addWidget.js +++ b/routes/api/v1/dashboard/addWidget.js @@ -1,6 +1,6 @@ const { Widget } = require( '../../../../models/widgets' ) -const addWidget = widgetData => dashboard => { +const addWidget = dashboard => { dashboard.widgets.push( new Widget( widgetData )) return dashboard.save() } diff --git a/routes/api/v1/dashboards.js b/routes/api/v1/dashboards.js index 54765fb..e79c828 100644 --- a/routes/api/v1/dashboards.js +++ b/routes/api/v1/dashboards.js @@ -37,8 +37,9 @@ router.delete( '/:id',( request, response ) => { }) router.post( '/:id/widgets', ( request, response ) => { - Dashboard.findById( request.params.id ).exec() - .then( addWidget( request.body )) + Dashboard.findByIdAndUpdate( request.params.id, + { $push: { widgets:request.body } } ).exec() + .then( result => result ) .then( dashboard => response.status( 201 ).json( dashboard )) .catch( errorResponse( response )) })