如何从服务访问req(request)属性

时间:2014-05-20 09:02:58

标签: node.js session express sails.js

从控制器的操作中访问session属性很简单。

var SomeController = {
  someAction: function(req, res) {
    // no we have access to session object
    if (!req.session.hasOwnProperty('flash')) {
      req.session.flash = [];
    } 
  }
}

但是我需要从服务中访问session对象。 示例文件app/services/my_servise.js

module.exports = {
  some_method: function() {
    // here at i need to get access to session object?
    // is it possible?   
  }
}

2 个答案:

答案 0 :(得分:1)

请参阅this answer,详细讨论为什么您无法在模型类方法中访问会话参数;完全相同的答案适用于服务。结果是,如果您希望访问服务代码中的会话,则必须将请求对象作为参数传递给您的服务方法。

答案 1 :(得分:0)

解决方案在很大程度上取决于调用my_service.js的时间以及使用它的目的。这是最简单的一个:

var my_service, SomeController;
my_service = require('./services/my_service.js'); // Assuming this module is in the /app directory.
SomeController = {
    'someAction': function(req, res) {
        if (!req.session.hasOwnProperty('flash')) {
            req.session.flash = [];
        }
        my_service.some_method(req);
    }
}

/app/services/my_service.js:

module.exports = {
    'some_method': function (req) {
        // use req.session
    }
};

如果这不是您正在寻找的内容,请详细解释my_service.js的用法。