Sails.js 如何在sails中存储最近访问的页面/路线?

Sails.js 如何在sails中存储最近访问的页面/路线?,sails.js,Sails.js,需要在应用程序中存储最近访问的页面列表,类似于windows中最近打开的文件列表。最好的方法是什么?这取决于很多因素,特别是如果你的应用程序是否有基于用户的系统 如果您的应用程序具有用户帐户的概念: 对于您的用户模型,添加一个额外的属性recentPages:{type:'ARRAY',defaultsTo:[]}。无论在何处处理用户的登录会话,都应将req.session.user设置为当前用户的实例 然后在/api/policies文件夹中创建一个全局策略trackUsers.js: mod

需要在应用程序中存储最近访问的页面列表,类似于windows中最近打开的文件列表。最好的方法是什么?

这取决于很多因素,特别是如果你的应用程序是否有基于用户的系统

如果您的应用程序具有用户帐户的概念:

对于您的
用户
模型,添加一个额外的属性
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
中抓取即可。您可以通过快速检查策略和删除元素来限制添加的页数;还有一个名为maxLength的模型验证


如果你的应用程序没有,那么你可以改为通过IP地址进行跟踪。这是风险更大,但我能想到的唯一解决办法(由于共享IP而存在风险,动态IP会使此功能不准确)

您将在
/api/models
中创建一个名为
User
的新模型,该模型具有一个属性
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在
用户
模型上进行查找,从而访问IP地址的最近页面。确保无论使用哪种方法,都将策略添加到
config/policies.js
'*':['trackUsers']