6

我现在正在学习 Node.js 和 Express,并且想使用mysql模块来呈现多个独特的页面,所以而不是写出来var connection=mysql.createConnection({user:'root', password: 'root'...etc})在目录下的每个文件上写一行routes,我相信最好只调用我自己的 mysql 配置文件在每个路由文件上。

但是,我应该将配置文件放在 Express 层次结构中的哪个位置,以及如何从每个路由文件中调用该文件?我知道所有图像、样式表和 javascript 文件都应该位于每个特定目录下public中,但我不知道将要从路由文件访问的所有其他文件放在哪里。

我还想知道,一旦我在 Web 上公开了这个 Web 应用程序,用户是否可以找到我的所有文件,从主app.js文件到routes目录下的文件到目录下的文件等等。public如果是这种情况,那么我认为我不应该将数据库配置文件放在客户端可以访问的目录中......对吗?换句话说,我想确定哪些文件可以被客户端访问,哪些不能,以避免安全攻击。

4

2 回答 2

14

要回答您的第一个问题“将配置文件放在哪里?”: 这有点个人化。将它放在应用程序的根目录中。

配置.js:

module.exports = {
  database:{
    host: ""
    user: "..."
  }
}

然后你将它包含在你的 app.js 中:

应用程序.js:

...
config = require("./config");
db = config.database;
var connection=mysql.createConnection({user:db.user, ...})

请注意,您可能需要两个配置文件,一个在您的版本控制中,一个对机器私有。例如,不同的开发人员可能具有不同的数据库访问权限。但我认为你现在不必担心这一点。

对于您的第二个问题“我的所有文件都是公开的吗?”: 不,只会提供您指定为静态的文件(使用快速中间件)。

应用程序.js:

...
// Exposes the public folder
app.use(express.static(__dirname + '/public'));
于 2013-06-11T21:10:40.410 回答
0

你可以把它们放在你想要的任何地方。我通常会在项目根目录下创建一个/conf目录,并将配置文件以 JSON 格式放入其中。

于 2013-06-11T21:05:47.930 回答