2

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

4

1 回答 1

2

您可以使用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您,还将在网站上跟踪人员两次。

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

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

于 2012-11-02T10:29:42.993 回答