Add models middleware

This commit is contained in:
Ritchie Martori 2014-02-04 18:07:21 -08:00
parent 7712ebc898
commit 4b8e358cbe
1 changed files with 48 additions and 0 deletions

48
lib/middleware/models.js Normal file
View File

@ -0,0 +1,48 @@
/*!
* Module dependencies.
*/
var loopback = require('../loopback');
/**
* Export the middleware.
*/
module.exports = models;
/**
* Return a script that defines all remote models.
*/
function models(app) {
return function (req, res, next) {
var script = 'window.loopback.remoteModels = ';
var models = [];
app.handler('rest').adapter.getClasses().forEach(function(c) {
if (!c.ctor) {
// Skip classes that don't have a shared ctor
// as they are not LoopBack models
console.error('Skipping %j as it is not a LoopBack model', name);
return;
}
models.push(toJSON(c));
});
res.send(script + JSON.stringify(models, null, 2));
}
}
function toJSON(sharedClass) {
var model = loopback.getModel(sharedClass.name);
var result = {
modelName: model.modelName,
settings: model.settings,
properties: model.properties,
baseRoute: sharedClass.routes[0],
methods: sharedClass.methods
};
result.settings.base = model.super_.modelName;
return result;
}