現在、私はエクスプレスセッションにオブジェクトをリンクしようとしています。
私のコードがあります:Express-Sessionのオブジェクトメソッド
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);
だから、私の問題は、私はセッション(通常はSQL接続オブジェクト)にオブジェクトをリンクしたい、です。そして、再利用は、「どこでも」、このオブジェクトは、クエリなど を実行するしかし、私は私の機能を使用しようとすると、私は、次のエラーメッセージが表示されている:
「req.session.engine.connectMeは関数ではありません」ただ、情報のため、私のエンジンオブジェクト、およびエンジン工場コード:
エンジン
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;
私が言ったように、目的はSQL接続をユーザーセッションにリンクすることです。接続はユーザーに与えられ、その後、ユーザーの接続を再利用してデータベースへのクエリを要求します(プール接続pattenrが優れていることがわかりますが、これは多くの理由でこのプロジェクトの要件です) 。
しかし、私はオブジェクトのメソッドを再利用することはできません...
ありがとうございました。
今、それは意味があります...私は別の方法で試してみます。あなたの貴重な助けをありがとうmscdex!あなたは私に多くの時間を救った! – Aethyn