Nodejs在调用函数后如何模块化.exports

时间:2016-02-25 08:01:20

标签: node.js

我正在使用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;

现在我的问题很少:

  1. User模块中,取决于要实例化的db对象,但因为我实际上在调用方法connect之前加载了模块{{1对象是未定义的,我可以通过将db移动到connect方法内部来解决它并且它可以工作,但是我知道在函数内部加载模块并不是一个好主意。 在实例化require('User');对象后,如何确保加载模块?

  2. 这是在模块之间共享变量的正确方法吗?我希望db可以在包中的每个模块中使用..我是怎么做到的?

1 个答案:

答案 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
});