Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
Javascript 如何计算在Node Js中打开特定url的唯一未授权用户数?_Javascript_Node.js_Mongodb_Mongoose_Express - Fatal编程技术网

Javascript 如何计算在Node Js中打开特定url的唯一未授权用户数?

Javascript 如何计算在Node Js中打开特定url的唯一未授权用户数?,javascript,node.js,mongodb,mongoose,express,Javascript,Node.js,Mongodb,Mongoose,Express,我正在使用ExpressJs和MongoDB。我想显示有多少未经授权的唯一用户打开了特定的事件页面 我应该如何实现这个请求计数器 检查IP地址或在cookie中添加一些标记 您可以使用a并执行以下操作: app.use(express.cookieParser()); app.use(function(req, res, next) { req.cookies['track_id'] ||= require('connect').utils.uid(32); next(); }); 现

我正在使用ExpressJs和MongoDB。我想显示有多少未经授权的唯一用户打开了特定的事件页面
我应该如何实现这个请求计数器
检查IP地址或在cookie中添加一些标记

您可以使用a并执行以下操作:

app.use(express.cookieParser());
app.use(function(req, res, next) {
  req.cookies['track_id'] ||= require('connect').utils.uid(32);
  next();
});
现在,您可以在每个站点上推送cookie的id:

app.use(function(req, res, next) {
  if(!req.isAuthenticated()){
    statistics.findAndModify(
      {_id: req.url},
      {},
      {$addToSet: {ids: req.cookies['track_id']}},
      {upsert:true}
    );
  }
  next();
});
然后可以在mongodb数据库中进行查询。如果为
ids
字段编制索引,则可以查询一个id,并查看他们访问了哪些URL。访问者的数量是数组的长度

如果将
$addToSet
替换为
$push
,您还将跟踪站点上的用户两次

当然,当人们删除他们的cookie时,这一切都会分崩离析^^


请注意,这是未经测试的,我只是边写边写。我还假设您使用了普通的
节点mongodb native
,DB查询可能会因您而异。Redis也是一个很好的解决方案。

这样的问题(如果是建设性的)将受益于JavaScript标记。我知道时间已经晚了,但我还想指出@Stefano_Sanfilippo答案:供饼干使用。