node.js - NodeJS (Express) - 项目结构和mongo连接

标签 node.js mongodb express

我用 ExpressJS 从头开始​​了一个新项目。 一切工作正常,但现在我开始有十几个“app.get(....)”函数,我需要为项目提供一个结构。

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

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

我尝试的是:

var 参数 = { 数据库:myMongoConnection }; var mod1 = require('routes/module1'); app.use('/module1', mod1);

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

另一个问题与 myMongoConnection 在连接回调中有效的事实有关,因此我认为我需要在 MongoClient 连接回调中要求并使用route.js。

有什么想法吗? 非常感谢

<小时/>

最佳答案

对于自定义模块,创建一个文件夹,将其命名为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

访问所有模块

关于node.js - NodeJS (Express) - 项目结构和mongo连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855349/

相关文章:

javascript - 多个域上的 Node.js 使用 express.vhosts()

javascript - 为什么关闭 Charles 应用程序后无法访问网站?

node.js - Meteor MongoDB 订阅以 10 秒的间隔而不是实时传递数据

嵌套数组中的Mongodb $push

node.js - 在不创建重复项的情况下使用阵列进行Upsert

node.js - 是否有 Polymer 组件可以简化与 MongoDB 的通信?

node.js - 如何在node js中获取浏览器中的url作为参数传给后端?

node.js - Mongoose - 通过 Id 找到 child

javascript - 使用动态 URL 查询参数提供静态目录

node.js - 如何在 NodeJS/Express 中的页面刷新之间保留 node-dbox token