Node.js和Express中应该在哪里find一个数据库configuration文件?
我现在正在学习Node.js和Express,并希望使用mysql
模块来呈现多个独特的页面,所以而不是写出var connection=mysql.createConnection({user:'root', password: 'root'...etc})
在routes
目录下的每个文件中,我确信最好在每个路由文件中调用我自己的mysqlconfiguration文件。
但是,我应该在哪里应该将configuration文件放在Express层次结构中,以及如何从每个路由文件中调用该文件? 我知道所有的图像,样式表和JavaScript文件应该位于public
目录下的每个特定的目录中,但我不知道应该从路由文件中将所有其他文件放在哪里。
我也想知道,一旦我在Web上公布这个Web应用程序,我所有的文件,从主app.js
到routes
目录下的文件,到public
目录下的文件等,都可以被用户find。 如果是这样的话,那么我想我不应该把数据库configuration文件放在客户端可以访问的目录上…对吧? 换句话说,我想确定哪些文件可以被客户访问,哪些不能为了避免安全攻击。
要回答你的第一个问题:“把configuration文件放在哪里?”:这有点人意。 把它放到你的应用程序的根目录下。
config.js:
module.exports = { database:{ host: "" user: "..." } }
那么你把它包含在你的app.js中:
app.js:
... config = require("./config"); db = config.database; var connection=mysql.createConnection({user:db.user, ...})
请注意,您可能需要两个configuration文件,一个在您的版本控制和一个私有的机器。 不同的开发者可能有不同的数据库访问。 但是现在我认为你不必担心这个问题。
对于第二个问题“我所有的文件是否公开?”:否,只有您指定为静态文件(使用快速中间件)才会被提供。
app.js:
... // Exposes the public folder app.use(express.static(__dirname + '/public'));
你可以把它们放在任何你想要的地方。 我通常在项目根目录下创build一个/conf
目录,并以JSON格式将configuration文件放在那里。