2016-06-20 9 views
1

Im Moment habe ich in meiner server.js Datei:Wie können Sitzungsvariablen zwischen Dateien in Nodejs exportiert werden?

const neo4j_conn = 'bolt://' + config.neo4j.host; 
const driver = neo4j.driver(neo4j_conn, neo4j.auth.basic(config.neo4j.username, config.neo4j.passphrase)); 
const session = driver.session(); 
app.set('neo4jsession', session); 

require('./app/routes')(app); 

und in meinen Routen-Datei Ich habe:

const session = app.get('neo4jsession'); 

bedenkt, dass ich nur eine Sitzung pro Anforderung benötigen, dann ist dies der richtige Ansatz für ich mich mit der Datenbank verbinden und eine Sitzung zurückbekommen? Können Sie ein besseres Designmuster/Codierverfahren/für diesen Zweck vorschlagen?

Antwort

1

In Ihrem Beispiel öffnen Sie die Sitzung, und es ist eine für den gesamten Server.

Sie müssen function passieren stattdessen Ergebnis function:

app.set('neo4jsession', driver.session); 

Und wenn wir das Beispiel des Routers aus der Box nehmen:

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    const session = req.app.get('session')();  
    session 
    .run(query) 
    .then(function(result) 
    { 
     res.json(result); 
     session.close(); 
    }) 
}); 

module.exports = router; 
+0

In Ihrem Fall, wie würden Sie die Sitzung schließen in der/Methode? –

+0

Siehe die aktualisierte Antwort. –

+0

Vielen Dank. Ich akzeptiere diese Antwort –