所以我的文件夹结构如下所示:
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...
}
这可能是一个愚蠢的问题,但你如何修改它以使用路由器?
答案 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
对象附加到路线代码中。