如何将app.js中的变量传递给路径文件?

时间:2018-05-08 21:00:07

标签: node.js express

所以我的文件夹结构如下所示:

app.js
----routes
    |----user.js
----models
    |----index.js
    |----(all my model files)

我想在app.js文件中要求我的所有模型文件,然后根据需要将该变量传递给路径。我的想法是,如果我的任何路由文件改变位置,我只需要更新app.js而不是必须更新路由文件需要调用。

我知道你可以说:

var User = require("./routes/user")(db);
app.use('/user', User);

我的用户文件看起来像这样:

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

...some code

modules.export = router;

我意识到通常你会写:

modules.export = (db)=>{
    some code here...
}

这可能是一个愚蠢的问题,但你如何修改它以使用路由器?

2 个答案:

答案 0 :(得分:1)

  

我的想法是,如果我的任何路径文件都改变了位置,我只需要更新app.js而不必更新路由文件需要调用。

如果您担心这一点,我可以感谢您module aliasing吗?您可以在package.json中设置模块的路径,然后使用为其创建的别名在路径文件中引用它们。如果路径发生变化,您只需更改package.json中的路径,而不是每个文件中的路径。模块别名也可以很好地解决这样的引用文件---> ./../../../module.js

答案 1 :(得分:0)

你可以在http.js模块的顶部放置一些中间件代码,肯定是在安装路由器处理程序之前,就像这样。

app.use( function ( req, res, next ) {
  req.models = {};
  req.models.model1 = whatever;
  req.models.model2 = whatelse;
  req.models.other = thing;  /* etc */
  next();
} );

然后,当您的请求到达您的路线时,他们会将附加的自定义models对象附加到路线代码中。