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