在 app.js 和路由 y node.js 之间共享一个对象
Posted
技术标签:
【中文标题】在 app.js 和路由 y node.js 之间共享一个对象【英文标题】:sharing an object between app.js and routes y node.js 【发布时间】:2017-10-04 08:00:22 【问题描述】:这是我的 app.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;
这是我的 routes/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()的使用造成了这个问题(注意在路由之前设置中间件并没有解决这个问题)
【问题讨论】:
【参考方案1】:有几种方法可以做到这一点:
1.在middlewareBefore变量声明后使用app.use('/', routes);
。
2.或者直接在顶部var model = require('./models/my_model');
的routes/index.js中声明my_model
并在 router.get() 中使用。
3.或更好地使用MVC架构。
【讨论】:
1.正如我在问题中所说,那没有用,2.这就是我实际上正在做的事情,但我想知道这是否就像创建一个新实例一样(所以如果我需要以前在应用程序中完成的事情,则需要在index 不会像调用不同的对象吗?)。 3. 请解释一下以上是关于在 app.js 和路由 y node.js 之间共享一个对象的主要内容,如果未能解决你的问题,请参考以下文章
jQuery 函数不适用于 node.js 中的 express.js 路由