2017-05-05 77 views
0

這是我app.js共享app.js和路線之間的對象ŸNode.js的

var express = require('express'); 

... 

var model = require('./models/my_model'); 
var routes = require('./routes/index'); 

var app = express(); 

app.use('/', routes); 

var middlewareBefore = function(req, res, next){ 

    my_model.getName(function(err, result){ 
     if(err){ 
      console.log(err); 
      res.redirect('/error'); 
     }else{ 
      console.log(result); 
      next(); 
     } 
    }) 
} 

app.use(middlewareBefore); 

... 

module.exports = app; 

,這是我的路線/ index.js文件

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res, next) { 
    res.render('login', { url: my_model.getUrl() }); 
}); 

module.exports = router(); 

我想從路由文件訪問my_model。我已經嘗試過使用app.locals,res,req,res.locals和app.use('/',routes)(my_model),正如在本頁面的不同問題上看到的,但它們都不起作用。我不知道如果express.Router()的用法是創建這個問題(注意,該航線前設置中間件並沒有解決這個問題)

回答

0

幾種方法做到這一點:後

1.使用app.use('/', routes);中間件的聲明變量之前。

2.or聲明my_model直接路由/在頂部var model = require('./models/my_model');

index.js和router.get內使用()。

3.或者更好的使用MVC架構。

+0

1.正如我在問題中所說的那樣,這不起作用,2.這就是我實際上在做的事情,但我想知道這是否會像創建一個新實例一樣(所以如果我需要以前在應用程序中完成的操作,使索引中的另一個需求不會像調用不同的對象?)。請解釋一下 – amlibtest