这是一个天真的问题。 假设您有一个配置文件,其中存储了与数据库建立连接所需的全部内容。 如果您是异步读取,是否在回调中完成连接?
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 '/')
答案 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)
建议:使用配置模块。它将根据环境或默认配置文件
读取您的配置文件