【问题标题】:NodeJS (Express) - project structure and mongo connectionNodeJS (Express) - 项目结构和 mongo 连接
【发布时间】:2015-06-15 21:34:43
【问题描述】:

我使用 ExpressJS 从头开始​​了一个新项目。 一切正常,但现在我开始有十几个 'app.get(....)' 函数,我需要给项目一个结构。

我的想法很简单,它应该有一个名为“routes”的文件夹,其中包含一个文件,例如“module1.js”,所有 app.get 都与该模块相关。 (就像我在很多例子中看到的那样)

问题是如何告诉 Express 将“http://url/module1/”路由到该路由文件,以及如何将参数变量传递给它,例如包含 mongodb 连接。

我尝试的是:

var params = { db: myMongoConnection }; var mod1 = require('routes/module1'); app.use('/module1', mod1);

但现在我仍然想念“参数”。 如果我尝试将它作为参数传递给 require 方法,我会收到一条错误消息,指出它需要中间件。

另一个问题与 myMongoConnection 在连接回调中有效这一事实有关,所以我认为我需要在 MongoClient 连接回调中使用 route.js。

有什么想法吗? 非常感谢


【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:

    对于自定义模块,创建一个文件夹,命名为modules 在其index.js 中,公开您需要的模块。 有点像,

    var mods = [
    'mod1',
    'mod2',
    ];
    
    function init() {
     var expose = {};
    
    var params = {
       db: myMongoConnection
    };
    
    mods.forEach(mods, function (mod) {
        expose[mod] = require('./' + mod)(params);
    });
    
    return expose;
    }
    
    // export init
    module.exports = init;
    

    mod1.js 中,包装params

       module.exports = function(params) {
    
       // all your functions here will have access to params. 
      }
    

    然后,server/app.js,需要这个并在应用程序中设置它。

    app.set('mods', require('path-to/modules'));
    

    现在,您可以使用 app.get('mods').moduleName.methodname 访问所有模块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-27
      • 2017-11-25
      • 1970-01-01
      • 2022-11-09
      • 2017-12-05
      • 1970-01-01
      • 2023-02-17
      • 2012-03-20
      相关资源
      最近更新 更多