2016-02-25 2 views
0

Я создаю приложение API REST с nodejs, Я также создаю внешний пакет для этого приложения. Этот пакет является адаптером между REST API и базой данных.Nodejs как module.exports после вызова функции

Пакет 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 вызывается, объект db не определен, я могу решить его, переместив require('User'); внутрь метода подключения и он работает, но из того, что я знаю, модуль загрузки внутри функции не является хорошей идеей. Как я могу загрузить модуль после создания объекта db?

  2. Это правильный способ обмена переменной между модулями? Я хочу, чтобы db был доступен в каждом модуле пакета. Как я это делаю?

ответ

-1

Я бы определил db в отдельном файле. И требуется этот файл один раз в главном файле приложения.

Основная проблема заключается в том, как убедиться, что соединение установлено до того, как какой-либо запрос погаснет.

пример:

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 
}); 
+0

Оберточные мое приложение в функции не то, что я хочу сделать .. и это не решает проблема требования внутри функции – tubu13

Смежные вопросы