首页 > 解决方案 > 节点js服务器propplem

问题描述

const express = require("express");
const app = express();
var i = new Number;
i=0;
app.get("/", function(req, res){
    i++
    console.log(i);
});
app.listen(8080);

我创建了一个非常小的节点 js 项目。我有个问题。当我创建一个像上面这样的变量时,它不会单独评估每个用户。也就是说,当用户请求获取时,我希望它每次都为 1。我的问题示例是,当杰克用户进入网站时,如果他没有注销,则从另一台设备进入该网站主页的人会使用杰克进入他的帐户。我怎样才能做到这一点?

标签: node.jsexpresssocketsserver

解决方案


对于您的问题,最简单的答案是简单地在传递给的函数内声明和增加变量app.get,但我将假设您希望对于给定用户的一系列请求,数字将增加的情况。

最简单的方法是使用由express-session库提供的服务器端会话。此外,为了使其工作,您需要调用res.end()以便将与服务器会话关联的 cookie 发送回用户的浏览器。通常可以在此处找到有关会话的更多信息。

下面是复制您在那里的意图的代码,但对于来自唯一浏览器实例的每个请求(由与服务器会话关联的相同 cookie 值标识)递增:

const express = require('express');
const session = require('express-session');

const app = express();

app.use(session({
  resave: false,
  saveUninitialized: true,
  secret: 'secret',
  cookie: {
    maxAge: 60000
  }
}));

app.get('/', function(req, res){
  if (!req.session.value) {
    req.session.value = 0;
  }

  req.session.value++;
  console.log(req.session.value);
  res.end();
});

app.listen(8080);

推荐阅读