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

最佳答案

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

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,则还将跟踪站点上的用户两次。
当然,当人们删除他们的饼干时,一切都崩溃了^^
请注意,这是未经测试的,我只是写下来,因为我走了。我还假设您使用的是普通的node-mongodb-native,db查询可能会有所不同。redis也是一个很好的解决方案。

关于javascript - 如何计算有多少未经授权的用户在Node Js中打开特定网址? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13193241/

10-09 08:23
查看更多