當前我正嘗試將對象與快速會話鏈接。
有我的代碼: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