在我的 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
文件吗?
答案 0 :(得分:49)
我认为你想要做的是:
var user = require('./user')(client)
这使您可以将客户端作为模块中每个函数的参数 或者作为模块范围变量,如下所示:
module.exports = function(client){
...
}
答案 1 :(得分:6)
此问题类似于:Inheriting through Module.exports in 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.....
}
答案 2 :(得分:-2)
您应该在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.....
}
我没有看到这样做的任何缺点......
答案 3 :(得分:-2)
您为什么要使用require
,对于scr,请不要使用source
。与require相同,我们可以在此函数中传递args。
var x="hello i am you";
console.log(require(x)); //error
console.log(source(x)); //it will run without error