2012-02-05 17 views
21

Nel mio app.js Ho sotto 3 linee.Come posso passare una variabile mentre utilizzo `require` in node.js?

var database = require('./database.js'); 
var client = database.client 
var user = require('./user.js'); 

Il file user.js è simile ai normali metodi di supporto. Ma ha bisogno di interagire con il database.

user.js

exports.find = function(id){ 
    //client.query..... 
} 

A quanto pare, voglio usare client all'interno del file user.js. È comunque possibile passare questo client al file user.js mentre sto utilizzando il metodo require?

risposta

42

Penso che ciò che si vuole fare è:

var user = require('./user')(client) 

Ciò consente di avere un client come parametro in ogni funzione nel modulo o come modulo variabile portata in questo modo:

module.exports = function(client){ 

... 

} 
-2

Si dovrebbe solo mettere lo stesso codice in 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..... 
} 

non vedo svantaggi facendo così ...

+0

Beh, non che creare 'n' clienti, se ho' n' modelli tra cui il file database.js? – user482594

+0

Dai un'occhiata qui per la risposta: http://stackoverflow.com/questions/5794968/in-node-js-am-i-creating-a-new-object-when-require –

6

Questa domanda è simile a: Inheriting through Module.exports in node

particolare rispondendo alla tua domanda:

module.client = require('./database.js').client; 
var user = require('./user.js'); 

In user.js:

exports.find = function(id){ 
    // you can do: 
    // module.parent.client.query..... 
} 
Problemi correlati