Node.js 如何从服务访问req(请求)属性
通过控制器的操作可以轻松访问Node.js 如何从服务访问req(请求)属性,node.js,session,express,sails.js,Node.js,Session,Express,Sails.js,通过控制器的操作可以轻松访问会话属性 var SomeController = { someAction: function(req, res) { // no we have access to session object if (!req.session.hasOwnProperty('flash')) { req.session.flash = []; } } } 但我需要从服务中访问会话对象。 示例文件app/services/my_se
会话
属性
var SomeController = {
someAction: function(req, res) {
// no we have access to session object
if (!req.session.hasOwnProperty('flash')) {
req.session.flash = [];
}
}
}
但我需要从服务中访问会话
对象。
示例文件app/services/my_servise.js
:
module.exports = {
some_method: function() {
// here at i need to get access to session object?
// is it possible?
}
}
解决方案在很大程度上取决于何时调用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的用法。有关为什么不能在模型类方法中访问会话参数的详细讨论,请参阅;同样的答案也适用于服务业。结果是,如果希望访问服务代码中的会话,则必须将请求对象作为参数传递给服务方法 注意,您不必
要求该服务,因为Sails会自动全球化所有服务文件。@ScottGress谢谢,我没有看到它必须与Sails.js一起工作。不过我不熟悉这个框架。我需要我的_service.js来保存和访问flash消息。示例:我向/user/login
操作发送POST请求。从数据是有效的。然后我将用户从当前操作重定向到/user/welcome
,我想显示在/user/login
操作中生成的一些消息。我需要使用会话来临时存储lash消息。