我正在使用ExpressJs和MongoDB。我想显示有多少未授权的唯一身份用户已打开特定的活动页面。
我该如何实现这个请求计数器?
检查IP地址或在cookie中添加一些标记......
答案 0 :(得分:3)
您可以使用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,并查看他们访问的网址。访问者数量是阵列的长度。
如果您将$addToSet
替换为$push
,您还会两次跟踪网站上的人。
当然,当人们删除他们的饼干时,一切都会崩溃^^
请注意,这是未经测试的,我只是在我去的时候写下来。我还假设您使用了普通node-mongodb-native
,数据库查询可能因您而异。 Redis也是一个很好的解决方案。