gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:18 25 4
gpt4 key购买 nike

我用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com