我正在使用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/