Javascript Expressjs-有没有一种方法可以将helper函数与req、res对象一起使用

Javascript Expressjs-有没有一种方法可以将helper函数与req、res对象一起使用,javascript,node.js,express,connect,Javascript,Node.js,Express,Connect,如何为内置req、res对象的路由提供帮助函数。例如,如果我用json发送了一条错误或成功消息,我有以下几行代码 console.log(err) data.success = false data.type = 'e' data.txt = "enter a valid email" res.json data 我打算把它放在一个像这样的助手函数中 global.sendJsonErr = (msg)-> data.success

如何为内置req、res对象的路由提供帮助函数。例如,如果我用json发送了一条错误或成功消息,我有以下几行代码

    console.log(err)
    data.success = false
    data.type = 'e'
    data.txt = "enter a valid email"
    res.json data
我打算把它放在一个像这样的助手函数中

global.sendJsonErr = (msg)->
        data.success = false
        data.type = 'e'
        data.txt = msg
        res.json data
但是我在helper函数中没有res对象,除了传递它,我怎样才能得到这些对象呢。因为会有更多的重复代码移动,我想带出路线。 它更像是一种宏,而不是一个功能模块。
谢谢

我不知道您的具体用例,但您可能需要使用中间件

这里定义了一些示例:但是您可以有一个以req和res为参数的函数,在每次请求时调用

app.use(function(req, res) {
    res.end('Hello!');
});
您还可以访问第三个参数,将手传递给下一个中间件:

function(req, res, next) {
    if (enabled && banned.indexOf(req.connection.remoteAddress) > -1) {
        res.end('Banned');
    }
    else { next(); }
}

我已经编写了定制中间件来做类似的事情。大概是这样的:

app.use(function(req, res, next) {
  // Adds the sendJsonErr function to the res object, doesn't actually execute it
  res.sendJsonErr = function (msg) {
    // Do whatever you want, you have access to req and res in this closure
    res.json(500, {txt: msg, type: 'e'})
  }

  // So processing can continue
  next() 
})
现在你可以这样做了:

res.sendJsonErr('oh no, an error!')

有关编写自定义中间件的更多信息,请参阅。

在路由应用程序中。get'/something',(req,res)->sendJsonErr('some error'),除非选中某个内容…这将出现在许多路由中..我希望避免重复代码..它更像是一个宏(3或4行代码)它实际上只是在每个请求中路由之前调用的一个函数,而不是middlewareA中间件。如果你喜欢的话,我喜欢过滤器。它甚至常常是处理错误处理或日志记录的最佳选择。对于几行代码可以使用它。这将避免代码重复唯一需要注意的是,每次请求都会有效地调用,因此,如果请求适合您,您必须找到一种快速绕过代码的方法Hanks..这是否会增加处理时间/性能..它不能像应用程序启动时那样一次加载,或者如果有宏,它会更好..因为它只是路由中逻辑之间的几行..额外的处理时间非常长可以忽略不计的我不会担心的。