在范围节点js中提供请求和响应

时间:2013-08-08 03:43:41

标签: node.js

我有module.exports

module.exports = {
  defaultStrings: function() {
    return "Hello World" +
           "Foo - Bar";
  },
  urlSlug: function(s) {
    return s.toLowerCase().replace(/[^\w\s]+/g,'').replace(/\s+/g,'-');
  }
};

我希望能够在函数request内使用responsedefaultStrings,如何在给定代码的最小更改的情况下包含该内容?

  defaultStrings: function(req, res, next) { // <--- This is not working it says Cannot call method 'someGlobalFunction' of undefined
    return "Hello World" +
           "Foo - Bar" + req.someGlobalFunction();
  },

在我的app.js我需要

中的文件
strings = require('./lib/strings'),

这就是在app.js

中调用它的方式
app.get('/',
        middleware.setSomeOperation,
        routes.index(strings);

2 个答案:

答案 0 :(得分:2)

您何时致电defaultStrings?如果您是通过routes直接使用app.get("some_url", defaultStrings)进行呼叫,则可以使用reqres

编辑:您的content = strings.defaultStrings();函数内部似乎是index。为了传递reqres参数,您只需将呼叫更改为content = strings.defaultStrings(req,res,cb),其中cb是由index定义的回调。

答案 1 :(得分:0)

我假设你正在使用node.js和express。

如果您想要访问http请求和响应,您可以选择以下几个选项:

添加myMiddleware功能作为所有路线的中间件

var myMiddleware = function(req, res, next) {
  console.log(req.route); // Just print the request route
  next(); // Needed to invoke the next handler in the chain
}

app.use(myMiddleware); //This will add myMiddleware to the chain of middlewares

将函数myMiddleware添加为特定路径的中间件

var myMiddleware = function(req, res, next) {
  console.log(req.route); // Just print the request route
  next(); // Needed to invoke the next handler in the chain
}

app.get('/', myMiddleware, function(...) {}); //This will add myMiddleware to '/'

将函数myHandler添加为路由处理程序

var myHandler = function(req, res) {
  console.log(req.route); // Just print the request route
  send(200); // As the last step of the chain, send a response
}

app.get('/', myHandler); //This will bind myHandler to '/'