Derzeit versuche ich, ein Objekt mit einer Express-Sitzung zu verknüpfen. mein Code
Es gibt:Objektmethode in Express-Sitzung
var express = require('express');
var session = require('express-session');
// I have an object named "engine", which is a fake SQL Object connection (for example)
// this is my engineFactory (which return an engine when function "giveMeObject" is called).
var engineFactory = require('./tools/engineFactory');
var eF = new engineFactory();
// create my app
var port = 3030;
var app = express();
app.use(session({
secret: "secret"
}));
app.get('/', function(req, res) {
// Req.session.engine will contains an SQL connection
req.session.engine = eF.giveMeObject();
res.send('object gived : ' + req.session.engine); // return "object gived : [object Object]", so ok.
});
app.get('/session', function(req, res) {
// Here I verify if my engine still exists
res.send("Coming From Session: " + req.session.engine); // return "Coming From Session: [object Object]" so, ok.
});
app.get('/session-test', function(req, res) {
// Here I
res.send(Object.getOwnPropertyNames(req.session.engine)); // return ["attributeA","attributeB"], so where is my connectMe() ?
req.session.engine.connectMe(); // error : "req.session.engine.connectMe is not a function"
});
app.listen(port);
console.log('app listen to ' + port);
mein Problem ist also, verbinde ich ein Objekt in eine Sitzung will (in der Regel eines SQL-Verbindungsobjekt). Und Weiterverwendung dieses Objekt „überall“ Abfragen auszuführen, usw. Aber wenn ich versuche, meine Funktion zu verwenden, habe ich die folgende Fehlermeldung:
„req.session.engine.connectMe ist keine Funktion“
nur zur Information, mein Motor-Objekt, und der Motor Werkscode:
Motor
function engine(){
this.attributeA = "aaa";
this.attributeB = "bbb";
};
engine.prototype.connectMe = function(){
return this.attributeA + this.attributeB;
};
module.exports = engine;
EngineFactory
var engine = require('./engine');
function engineFactory() {
};
engineFactory.prototype.giveMeObject = function() {
return new engine;
};
module.exports = engineFactory;
Wie gesagt, das Ziel ist es, eine SQL-Verbindung mit einer Benutzersitzung zu verknüpfen. Die Verbindung wird dem Benutzer gegeben, dann verwendet die App die Verbindung des Benutzers, um Abfragen an die Datenbank zu stellen (darüber weiß ich, dass das Poolverbindungspattern besser ist, aber dies ist aus vielen Gründen eine Voraussetzung für dieses Projekt) .
Aber zur Zeit kann ich die Methode des Objekts nicht wiederverwenden ...
Danke für die Hilfe.
Ok, es macht jetzt Sinn ... Also, ich werde einen anderen Weg versuchen. Danke für deine wertvolle Hilfe mscdex! Du hast mich viel Zeit gerettet! – Aethyn