2017-05-05 4 views
0

Das ist mein app.jsein Objekt zwischen app.js und Routen teilen y 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; 

und dies ist meine Routen/index.js Datei

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

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

module.exports = router(); 

Ich versuche, um aus der Routendatei auf my_model zuzugreifen. Ich habe bereits versucht, app.locals, res, req, res.locals und app.use ('/', routes) (my_model) zu verwenden, wie auf verschiedenen Fragen von dieser Seite zu sehen, aber keiner von ihnen scheint zu funktionieren. ., wenn die Verwendung von express.Router frage ich mich() wird dieses Problem zu schaffen (beachten Sie, dass die Middleware-Einstellung vor der Strecke hat das nicht lösen)

Antwort

0

Mehrere Möglichkeiten, das zu tun:

1.use app.use('/', routes); nach Deklaration von MiddlewareBefore Variable.

2.Or declare my_model direkt in Routen/index.js oben var model = require('./models/my_model');

und innerhalb von router.get().

3.oder besser MVC-Architektur verwenden.

+0

1. wie ich in der Frage sagte, das hat nicht funktioniert, 2. das ist, was ich eigentlich tue, aber ich frage mich, ob dies wäre wie eine neue Instanz erstellen (also wenn ich etwas zuvor in App eine andere Anforderung im Index zu machen ist nicht wie ein anderes Objekt aufzurufen?). 3. bitte erklären – amlibtest

Verwandte Themen