Created
December 19, 2011 03:54
-
-
Save flockonus/1495306 to your computer and use it in GitHub Desktop.
One way to (sort of) rest (w Mongoose)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var build = require('./crud.js').build | |
var gameController = build('Game') | |
// how to get this automatic? remember middleware | |
app.get( '/games', gameController.index) | |
app.get( '/games/:id', gameController.show) | |
app.post( '/games', gameController.save) | |
app.post( '/games/:id/delete', gameController.destroy) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Rely on GLOBAL.app for a express server | |
* and GLOBAL.models for models defined (mongoose) | |
*/ | |
function build(modelName, options){ | |
function loadOne(id, cb) { | |
}; | |
var controller = { | |
name: modelName, | |
index: function(req, res, next){ | |
app.models[modelName].find({}, function(err, docs) { | |
res.json( | |
docs.map(function(e,i){ return e.toJSON() }) | |
) | |
}) | |
}, | |
show: function(req, res, next){ | |
// console.log( req.params.id ) | |
app.models[modelName].findById( req.params.id , function(err, doc) { | |
if(err) res.json([0]) | |
res.json( doc ) | |
}) | |
}, | |
//edit: function(req, res, next){ }, | |
save: function(req, res, next){ | |
if( req.body && req.body[modelName.toLowerCase()] ){ | |
saveCb = function(err, doc) { | |
// TODO | |
} | |
if( req.body[modelName.toLowerCase()]._id ){ //UPDATE | |
app.models[modelName].update({ _id: req.body[modelName.toLowerCase()]._id }, | |
req.body[modelName.toLowerCase()], | |
saveCb | |
) | |
} else { // CREATE | |
(new app.models[modelName](req.body[modelName.toLowerCase()])).save( saveCb ) | |
} | |
// FIXME | |
res.json( [1] ) | |
} else { | |
res.json( [0] ) | |
} | |
}, | |
destroy: function(req, res, next){ | |
if( req.params && req.params.id ){ | |
res.json( [0] ) | |
} else { | |
app.models[modelName].remove({ _id: req.params.id }, function(err, doc) { | |
res.json( doc.toJSON() ) | |
}) | |
} | |
}, | |
} | |
return controller | |
} | |
exports.build = build |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment