提交 b874693d462be00007cdae50b41d385de6df9bd7

作者 sandaruwan_silva
1 个父辈 0dc931d4

Implemented data injection feature to support asynchronously generated objects l…

…ike lib, some code clean-up, added mongoose example
... ... @@ -4,7 +4,7 @@
4 4 var mongoose = require('mongoose')
5 5 exports = module.exports = home
6 6
7   -function home(app, lib, modeluser) {
  7 +function home(lib, settings) {
8 8 return {
9 9
10 10 render: function(req, res, next) {
... ... @@ -12,16 +12,10 @@ function home(app, lib, modeluser) {
12 12 },
13 13
14 14 about: function(req, res, next) {
15   - // save project data
16   - var User = mongoose.model('User', modeluser);
17   - console.log(modeluser);
18   - User.create({name: 'john'}, function( err, project ) {
19   - res.send(200, 'Hello, this is Igloo.')
20   - });
21   -
  15 + res.send(200, 'Hello, this is Igloo.')
22 16 }
23 17
24 18 }
25 19 }
26 20
27   -exports['@require'] = [ 'mongo', 'redis', 'models/user' ];
\ No newline at end of file
  21 +exports['@require'] = [ 'lib', 'settings' ];
\ No newline at end of file
... ...
... ... @@ -8,30 +8,16 @@ var mongoose = require('mongoose'),
8 8
9 9 mongooseTypes.loadTypes(mongoose)
10 10
11   -//var Email = mongoose.SchemaTypes.Email
  11 +var Email = mongoose.SchemaTypes.Email
12 12
13 13 var User = new Schema({
14   - /*email: {
  14 + email: {
15 15 type: Email,
16 16 required: true,
17 17 unique: true
18   - }*/
19   - name: String
  18 + }
20 19 })
21 20
22 21 User.plugin(common)
23 22
24   -module.exports = User;
25   -
26   -
27   -var MUser = mongoose.model('User', User);
28   -
29   -var user = new MUser({
30   - name: 'user@example.com',
31   -});
32   -
33   -MUser.create({name: 'john'}, function( err, project ) {
34   - console.log(200, 'Hello, this is Igloo.')
35   -});
36   -
37   -console.log(MUser.db);
\ No newline at end of file
  23 +module.exports = User;
\ No newline at end of file
... ...
... ... @@ -16,6 +16,7 @@ var errorHandler = require('errorhandler')
16 16 var serveFavicon = require('serve-favicon')
17 17 var cookieParser = require('cookie-parser')
18 18 var bodyParser = require('body-parser')
  19 +var dataNode = require('../lib/dataNode')
19 20
20 21
21 22 module.exports = function(lib, callback) {
... ... @@ -35,7 +36,10 @@ module.exports = function(lib, callback) {
35 36 ioc.loader('controllers', ioc.node('app/controllers'));
36 37 ioc.loader('models', ioc.node('app/models'));
37 38 ioc.loader(ioc.node('config'));
38   - ioc.loader(ioc.node('lib'));
  39 +
  40 + // set-up data nodes (inject data)
  41 + ioc.loader(dataNode(lib, 'lib'));
  42 + ioc.loader(dataNode(app, 'app'));
39 43
40 44 // set the default views directory
41 45 app.set('views', lib.config.viewsDir)
... ... @@ -88,10 +92,11 @@ module.exports = function(lib, callback) {
88 92 app.use(express.static(lib.config.publicDir, lib.config.staticServer))
89 93
90 94 // error handling
91   - //app.use(express.errorHandler())
92 95 app.use(errorHandler())
93 96
94 97
95 98 callback(null, app)
96 99
  100 + return {app: app, lib: lib}
97 101 }
  102 +
... ...
... ... @@ -2,7 +2,6 @@
2 2 // # routes
3 3
4 4 var IoC = require('electrolyte')
5   -
6 5 var lib, app
7 6
8 7
... ... @@ -13,8 +12,7 @@ module.exports = function(_lib, _app) {
13 12 }
14 13
15 14 function routes() {
16   - var self = app;
17   -
  15 +
18 16 var home = IoC.create('controllers/home')
19 17
20 18 app.get('/', home.render)
... ...
... ... @@ -6,8 +6,6 @@ var config = require('./index');
6 6
7 7 /**
8 8 * Initialize settings.
9   - *
10   - * This component configures the application's settings.
11 9 */
12 10 exports = module.exports = function(lib, app) {
13 11 var settings = new Settings(config);
... ... @@ -21,6 +19,9 @@ exports = module.exports = function(lib, app) {
21 19 exports['@singleton'] = true;
22 20
23 21
  22 +/**
  23 + * Settings component
  24 + */
24 25
25 26 function Settings(initial) {
26 27 if(initial)
... ...
  1 +/**
  2 + * Mongoose create route.
  3 + * Use this in a controller and setup a route
  4 + * to create function.
  5 + */
  6 +
  7 +exports = module.exports = home
  8 +
  9 +function home(db, _User) {
  10 + return {
  11 +
  12 + create: function(req, res, next) {
  13 +
  14 + // create user object using db ('lib/db') connection
  15 + // and models/user
  16 +
  17 + var User = db.model('User', _User);
  18 +
  19 + User.create({email: 'somebody@example.com'}, function( err, user ) {
  20 + if(err)
  21 + res.send(500, 'Igloo: Something went wrong.')
  22 + else
  23 + res.send(200, 'Igloo: Created user.')
  24 + });
  25 +
  26 + }
  27 +
  28 + }
  29 +}
  30 +
  31 +exports['@require'] = [ 'lib/db', 'models/user' ];
\ No newline at end of file
... ...
  1 +
  2 +/**
  3 + * This is the missing data injection functionality in
  4 + * electrolyte. Based on electrolyte/loaders/node.js, the
  5 + * default script loader.
  6 + *
  7 + */
  8 +
  9 +module.exports = function(data, options) {
  10 + if ('string' == typeof options) {
  11 + options = { dirname: options }
  12 + }
  13 +
  14 + return function(id) {
  15 +
  16 + var newId = null;
  17 +
  18 + if(id){
  19 + var dir = options.dirname + '/'
  20 +
  21 + if(id.indexOf(dir) === 0)
  22 + newId = id.substr(dir.length)
  23 + }
  24 +
  25 + if(newId)
  26 + return data[newId]
  27 + else
  28 + return data
  29 + }
  30 +}
... ...
... ... @@ -10,4 +10,3 @@ module.exports = function(config) {
10 10 lib.config = config
11 11 return lib
12 12 }
13   -
... ...
... ... @@ -11,7 +11,3 @@ var logger = module.exports = new (winston.Logger)({
11 11 ]
12 12 })
13 13
14   -/**
15   - * Component annotations.
16   - */
17   -exports['@singleton'] = true;
... ...
... ... @@ -10,13 +10,7 @@ module.exports = function(_config) {
10 10 return mongo
11 11 }
12 12
13   -/**
14   - * Component annotations.
15   - */
16   -exports['@singleton'] = true;
17   -
18 13 function mongo(callback) {
19   - console.log(config.db);
20 14 var connection = mongoose.createConnection(
21 15 config.db.host,
22 16 config.db.dbname,
... ...
... ... @@ -12,11 +12,6 @@ module.exports = function(_config) {
12 12 return redis
13 13 }
14 14
15   -/**
16   - * Component annotations.
17   - */
18   -exports['@singleton'] = true;
19   -
20 15 function redis(callback) {
21 16 var connection = new RedisStore(config.redis)
22 17 connection.on('error', callback)
... ...
... ... @@ -10,7 +10,6 @@ module.exports = schemas
10 10 function schemas(lib, callback) {
11 11
12 12 _.each(models, function(schema, name) {
13   - console.log(name, '333');
14 13 lib.db.model(name, schema)
15 14 })
16 15
... ...
注册登录 后发表评论