diff --git a/servers/Route.bones b/servers/Route.bones index ebcee142..60db186d 100644 --- a/servers/Route.bones +++ b/servers/Route.bones @@ -79,10 +79,10 @@ server.prototype.initializeAssets = function(app) { server.prototype.initializeModels = function(app) { this.models = app.models; - _.bindAll(this, 'loadModel', 'getModel', 'saveModel', 'delModel', 'loadCollection'); + _.bindAll(this, 'loadModel', 'getModel', 'fillModel', 'saveModel', 'delModel', 'loadCollection'); this.get('/api/:model/:id', this.loadModel, this.getModel); this.post('/api/:model', this.loadModel, this.saveModel); - this.put('/api/:model/:id', this.loadModel, this.saveModel); + this.put('/api/:model/:id', this.loadModel, this.fillModel, this.saveModel); this.del('/api/:model/:id', this.loadModel, this.delModel); this.get('/api/:collection', this.loadCollection.bind(this)); }; @@ -128,6 +128,19 @@ server.prototype.getModel = function(req, res, next) { }); }; +server.prototype.fillModel = function(req, res, next) { + if (!req.model) return next(); + req.model.fetch({ + success: function(model, resp) { + next(); + }, + error: function(model, err) { + err = err instanceof Object ? err.toString() : err; + next(new Error.HTTP(err, 404)); + } + }); +}; + server.prototype.saveModel = function(req, res, next) { if (!req.model) return next(); req.model.save(req.body, {