我正在使用nodejs构建REST API应用程序, 我还在为该应用程序构建外部包。 该包是REST API与数据库之间的适配器。
包index.js
就是这样:
db = undefined;
var User = require('./models/user/user-model');
var neo4j = require('seraph');
module.exports.connect = function (url, username, password) {
db = neo4j({server: url, user: username, pass: password});
};
module.exports.User = User;
现在我的问题很少:
在User
模块中,取决于要实例化的db
对象,但因为我实际上在调用方法connect
之前加载了模块{{1对象是未定义的,我可以通过将db
移动到connect方法内部来解决它并且它可以工作,但是我知道在函数内部加载模块并不是一个好主意。
在实例化require('User');
对象后,如何确保加载模块?
这是在模块之间共享变量的正确方法吗?我希望db
可以在包中的每个模块中使用..我是怎么做到的?
答案 0 :(得分:-1)
我会在单独的文件中定义db。并在主app文件中要求该文件一次。
主要问题是如何在任何查询发出之前确保建立连接。
示例:
db.js
module.exports = function(callback) {
db = neo4j({server: url, user: username, pass: password}, callback);
}
server.js
var db = require('./db');
db(function(err, graph){
if (err) throw err;
//here start up the server
});