2016-09-05 3 views
-1

У меня есть следующий код для реализации nodejs a rest api.
app.jsПередача параметров module.exports в nodejs

var connection = require('./database_connector');  
connection.initalized(); //guys connection is i want to pass a connection varible to the model 
var peson_model = require('./models/person_model')(connection); //this not working 
var app = express(); 
app.use(bodyparser.urlencoded({extended: true})); 
app.use(bodyparser.json()); 
app.get('/persons/', function(req, res) { 
    person_model.get(res); // retrive get results 
}); 
// .............express port and listen 

person_model.js класс модели, который должен извлекать на основе глагола HTTP. Например, person.get извлекает следующее и в настоящее время имеет единственный метод, как показано ниже.

function Person(connection) { 
    this.get = function (res) { 
     connection.acquire(function(err, con) { 
      con.query('select * from person limit 3', function(err, result) { 
       con.release(); 
       console.log("get called"); 
       res.send(result); 
      }); 
     }); 
    }; 
} 
// ** I want to pass a connection variable to the model 
module.exports = new Person(connection); 

В вышеуказанном коде var peson_model = require('./models/person_model')(connection); не работает.

Как передать переменную соединения и экспортировать модуль?

ответ

3

Если вы вернете функцию из своего экспорта, вы можете передать свой параметр.

module.exports = function(connection) { 
    return new Person(connection); 
}; 

Вам нужно будет установить this.connection и использовать его внутри функции, хотя.

+0

Есть ли какие-либо средства, чтобы я мог передавать соединение, неявное, не явное значение, а не передавать его по всем моделям каждый раз, когда я хочу, чтобы оно было широко распространенным. за один раз созданный. Я очень благодарен за ответ – danielad

+0

Как вы отправляете правильное сообщение об ошибке, если пользователь забывает включать (соединение) при выдаче запроса ('./ lib.js')? Я попытался поставить «if connection === undefined then throw» в функции, как вы уже выше, и бросок не выполняется ... – PeterT