Node& Express中的配置文件是否应该异步读取?

时间:2016-09-22 17:37:25

标签: node.js mongodb express mongoose readfile

这是一个天真的问题。 假设您有一个配置文件,其中存储了与数据库建立连接所需的全部内容。 如果您是异步读取,是否在回调中完成连接?

fs.readFile(pathToConfigFile, function (err, data){ createConnection(data);});

它看起来丑陋,可疑和有点危险,不是吗? (这是一个例子,但我想听听一些关于它的意见,是否以及为什么这样做等等) 在我的情况下,我使用mongoose,我在架构对象(即User.find()...)上查询数据库,所以我只是得到空结果,因为连接不会同步发生我想。

非常感谢

(这是我的app-structure)

app.js 
db.js (read the config file and make the connection)
config.json (info of db and others)
user.js (model for users)
home.js (query all the users and list them on .get '/')

2 个答案:

答案 0 :(得分:1)

在app启动期间可以同步操作。但是,一旦应用程序启动,请不要执行任何同步操作,尤其是在处理请求时。

您的应用应配置为在数据库连接成功时启动。

// set up your app
var express = require('express')
var app = express()

....

// set up database connectiveity
var db = mongoose.connection;
db.on('error', function() {
  console.log('DB connectivity error')
  process.exit()
});
db.once('open', function() {

  // start your app now
  app.listen()

});

答案 1 :(得分:1)

像这样创建config.json:

<强> config.json

module.exports = {
dbUrl:"mongodb://localhost/testDB",
serverPort: 9999
// add you other config key here
}

并要求配置文件,只要您想使用:

var config = require("./config");

console(config, config.severPort)

建议:使用配置模块。它将根据环境或默认配置文件

读取您的配置文件