Node.js 和 Express 中的数据库配置文件应该放在哪里?
Posted
技术标签:
【中文标题】Node.js 和 Express 中的数据库配置文件应该放在哪里?【英文标题】:Where should be located a database config file in Node.js and Express? 【发布时间】:2013-06-07 20:57:51 【问题描述】:我现在正在学习 Node.js 和 Express,并且想使用 mysql
模块来呈现多个唯一页面,所以我不是在位于 routes
目录下的每个文件上写出 var connection=mysql.createConnection(user:'root', password: 'root'...etc)
行,而是当然最好只在每个路由文件上调用我自己的 mysql 配置文件。
但是,我应该将配置文件放在 Express 层次结构中的什么位置,以及如何从每个路由文件中调用该文件?我知道所有图像、样式表和 javascript 文件都应位于 public
目录下的每个特定目录中,但我不知道将要从路由文件访问的所有其他文件放在哪里。
我还想知道我的所有文件,从主app.js
到routes
目录下的文件,再到public
目录下的文件等等……一旦我公开这个Web 应用程序,用户是否可以找到我的所有文件在网上。如果是这种情况,那么我认为我不应该将数据库配置文件放在客户端可以访问的目录中......对吗?换句话说,我想确定哪些文件可以被客户端访问,哪些不能,以避免安全攻击。
【问题讨论】:
【参考方案1】:回答您的第一个问题“将配置文件放在哪里?”: 这有点个人化。将它放在应用程序的根目录中。
config.js:
module.exports =
database:
host: ""
user: "..."
然后你将它包含在你的 app.js 中:
app.js:
...
config = require("./config");
db = config.database;
var connection=mysql.createConnection(user:db.user, ...)
请注意,您可能需要两个配置文件,一个在您的版本控制中,一个对机器私有。例如,不同的开发人员可能具有不同的数据库访问权限。但我认为你现在不必担心这个。
关于您的第二个问题“我的所有文件都是公开的吗?”: 不,只会提供您指定为静态的文件(使用 express 中间件)。
app.js:
...
// Exposes the public folder
app.use(express.static(__dirname + '/public'));
【讨论】:
如何在生产中处理这个问题?【参考方案2】:你可以把它们放在你想要的任何地方。我通常会在项目根目录下创建一个/conf
目录,并将配置文件以 JSON 格式放入其中。
【讨论】:
以上是关于Node.js 和 Express 中的数据库配置文件应该放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
windows server+express+node.js配置https