需要在应用程序中存储最近访问过的页面列表,例如Windows中最近打开的文件列表。对此最好的方法是什么?
答案 0 :(得分:1)
这取决于很多方面,特别是如果您的应用程序具有基于用户的系统。
如果您的应用具有用户帐户的概念:
对于您的User
模型,请添加额外的属性recentPages: {type: 'ARRAY', defaultsTo: [] }
。无论您在何处处理用户的登录会话,都应将req.session.user
设置为当前用户的实例。
然后在/api/policies
文件夹中创建全局政策 trackUsers.js :
module.exports = function(req, res, next) {
if (req.session.user) {
req.session.user.recentPages.append(req.url);
req.session.user.save(function (err) {
return next();
});
} else {
return next();
}
};
如果您想访问用户的近期网页,只需从user.recentPages
抓取即可。您可以通过快速检查政策和删除元素来限制添加的页数;还有Waterline ORM验证了名为 maxLength 的模型。
如果您的应用没有,那么您可以通过IP地址进行跟踪。这是风险较大但我能想到的唯一解决方法(由于共享IP,动态IP会导致此功能不准确)。
您将在User
中创建一个名为/api/models
的新模型,该模型具有属性ipAddress: { type: 'STRING', ip: true, primary: true }
和另一个属性recentPages: {type: 'ARRAY', defaultsTo: [] }
。
然后在/api/policies
文件夹中创建全局政策 trackUsers.js 。
module.exports = function(req, res, next) {
User.find(req.ip, function foundUser (err, user) {
if (!err && user) {
user.recentPages.append(req.url);
user.save(function (err) {
return next();
});
} else {
return next();
}
});
};
您可以通过使用您在客户端获取的IP在User
模型上查找来访问IP地址的最新页面。无论您使用哪种方法,都要确保将政策添加到config/policies.js
:'*': ['trackUsers']