0

我有这个module.exports

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

我希望能够使用requestresponse内部函数defaultStrings我将如何在给定代码的最小更改中包含它?

  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);
4

2 回答 2

2

你什么时候打电话defaultStrings?如果您使用 , 直接从您的routesie调用它,app.get("some_url", defaultStrings)那么您应该可以使用它。reqres

编辑:看来您是通过以下方式调用它的:content = strings.defaultStrings();在您的index函数内部。为了传递reqres参数,您必须简单地将调用更改为content = strings.defaultStrings(req,res,cb),其中cb定义的回调是index.

于 2013-08-08T03:48:45.690 回答
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 '/'
于 2013-08-08T09:10:19.090 回答