我有多个需要访问数据库的路线,对于开发我使用本地数据库,显然生产我使用托管数据库
唯一的问题是每次我去推送版本时我都必须手动更改数据库链接
e.g.
var mongodb = require('mongojs').connect('urlhere', ['Collection']);
如果我可以在中声明一个变量,那就太好了app.js
like
app.set('mongoDBAddress', 'urlhere');
然后在每个文件中执行类似的操作var mongodb = require('mongojs').connect(app.get('mongoDBAddress'), ['Collection']);
有谁知道这是否可以实现,我已经用谷歌搜索了大约一个小时,并试图包含不同的东西,但我没有运气。谢谢。
来自docs http://nodejs.org/api/globals.html#globals_global:
在浏览器中,顶级作用域是全局作用域。这意味着
如果您在全局范围内,则在浏览器中var something
将定义一个
全局变量。在 Node 中这是不同的。顶级范围不是
全球范围;var something
Node 模块内部将是本地到
那个模块.
你必须有一点不同的想法。不要创建全局对象,而是创建模块,以便它们采用app
举例来说,例如:
// add.js
module.exports = function(app) { // requires an `app`
return function add(x, y) { // the actual function to export
app.log(x + y) // use dependency
}
}
// index.js
var app = {log: console.log.bind(console)}
var add = require('./add.js')(app) // pass `app` as a dependency
add(1, 2)
//^ will log `3` to the console
这是 Express 和其他库中的约定。app
位于您的主文件中(即index.js
),并且您需要的模块有一个app
范围。
您可以添加一个全局变量GLOBAL
,看这个这个问题 https://stackoverflow.com/questions/5447771/node-js-global-variables,尽管这可能被认为是不好的做法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)