Add models middleware
This commit is contained in:
parent
7712ebc898
commit
4b8e358cbe
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue