Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点快速会话未持久化_Node.js_Html_Cordova_Session_Express - Fatal编程技术网

Node.js 节点快速会话未持久化

Node.js 节点快速会话未持久化,node.js,html,cordova,session,express,Node.js,Html,Cordova,Session,Express,我对Express session对象有一个奇怪的问题:当我使用我的应用程序一个简单的HTML5/JQM网站单页应用程序作为web应用程序时,也就是说,我的页面在我的节点服务器上,Express的session对象工作正常;但是,如果我尝试将我的应用程序用作一个HTML页面,明显地将其服务指向node.js服务器应用程序,就像Cordova应用程序一样,事实上我希望使用它,就像每次get/post请求时我的sessionid都会改变一样;这会导致我的会话总是被重新创建,并且我存储到会话中的变量不

我对Express session对象有一个奇怪的问题:当我使用我的应用程序一个简单的HTML5/JQM网站单页应用程序作为web应用程序时,也就是说,我的页面在我的节点服务器上,Express的session对象工作正常;但是,如果我尝试将我的应用程序用作一个HTML页面,明显地将其服务指向node.js服务器应用程序,就像Cordova应用程序一样,事实上我希望使用它,就像每次get/post请求时我的sessionid都会改变一样;这会导致我的会话总是被重新创建,并且我存储到会话中的变量不会通过我的应用程序持久化。。。我需要从我当前的网站制作一个Cordova应用程序;我错过了什么

我对这件事做了大量的研究,也找到了一些解决方案,但在我的情况下不起作用

我在登录一个简单的json对象时设置了一个会话变量,然后在应用程序向会话中json变量中包含的数组添加基本项的过程中对其进行更新;它只在我将var更新为一个特定路由时起作用;但是我需要从另一个路由访问会话对象,我总是发现它是空的;正如我之前所说,当我将应用程序用作web应用程序时,不会发生这种情况;但当我像Cordova应用程序那样直接打开html文件时,就会发生这种情况;希望我说得足够清楚

提前谢谢

下面是我的一些代码摘录

代码摘录:

app.js main node.js服务器应用程序

installations.js/installations路径的路由

如前所述,只有当我使用html5单页作为本地页面时,才会出现这种行为,就像在cordova/phonegap应用程序中一样。 当将页面用作web应用程序时,根本不会发生这种情况,在这种模式下,它可以完美地工作


提前感谢

您能否分享一些应用程序配置、路由和控制器。我相信这会帮助其他人找到确切的问题。如果您能展示如何配置会话中间件并在控制器中与之交互,那就太好了;我有一个主app.js,根据url指向路由,问题是installations.js路由;仅此而已,使用express和req.session对象。正如我所说,当将单页HTML用作网站上的网页时,我的代码工作正常。。但是,我需要将其设置为Cordova,在远程访问node app.js服务器服务的普通HTML5文件中,它显示了如何注册会话中间件、配置会话存储和注册路由器的问题。基本上,全局应用程序对象的摘录现在就足够了,但最好将它们添加到您的问题中,这样用户就不必在注释中深入挖掘。@DemyMortelliti不要在注释部分添加您的代码。请用更新的代码示例以可读的格式编辑您的问题,以帮助人们回答。
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended : false
}));
app.use(favicon(__dirname + '/public/img/bluemix_logo.png'));
app.use(logger('dev'));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({ 
 'cookie': {
            'httpOnly': false,
            'maxAge': 1000 * 60 * 60 * 24 * 60,
        },
secret: 'keyboard cat' }));    //used same parameters i found on 
//..............
app.use('/', index);
app.use("/installations",installations)
var installBuffer=[];

router.post('/addItem', function(req, res) {
    var tipo = req.body.tipo;   
    var aas = req.body.assignee; 
    var location = req.body.location;
    sess=req.session;
    var l=installBuffer.length;
    var idx=l++;
    installBuffer[idx]=req.body;    //here i add an item to installBuffer
    sess.installBuffer = installBuffer;  //and here i put it into session
    console.log("session: "+JSON.stringify(sess));  //this works ok
    //at any reference to this route items are incremented correctly
    res.send("additem");
});


router.post('/addItem/addInstallation', function(req, res) {
    sess=req.session;
   console.log("session: "+req.session); //here session is always empty
    // with its default json vars cookie, httponly, etc...
    res.send("addinstallation");
});