Как передать переменную при использовании `require` в node.js?
В моем app.js у меня есть менее 3 строк.
var database = require('./database.js');
var client = database.client
var user = require('./user.js');
Файл
user.js выглядит так же, как обычные вспомогательные методы. Но он должен взаимодействовать с базой данных.
user.js
exports.find = function(id){
//client.query.....
}
По-видимому, я хочу использовать client
внутри файла user.js
. Есть ли в любом случае, что я могу передать этот client
в файл user.js
, тогда как я использую метод require
?
Ответы
Ответ 1
Я думаю, что вы хотите сделать:
var user = require('./user')(client)
Это позволяет вам иметь клиент в качестве параметра в каждой функции вашего модуля
или как переменная области модуля следующим образом:
module.exports = function(client){
...
}
Ответ 2
Этот вопрос похож на: Наследование через Module.exports в node
В частности, отвечая на ваш вопрос:
module.client = require('./database.js').client;
var user = require('./user.js');
В user.js:
exports.find = function(id){
// you can do:
// module.parent.client.query.....
}
Ответ 3
Вы должны просто поместить тот же код в user.js
app.js
var client = require('./database.js').client; // if you need client here at all
var user = require('./user.js');
user.js
var client= require('./database.js').client;
exports.find = function(id){
//client.query.....
}
Я не вижу никаких недостатков, делая это так...