快速.js将变量从函数传递到视图

Express.js pass variable from function to view

本文关键字:视图 函数 js 变量 快速      更新时间:2023-09-26

我需要将从上一个函数创建的一些数组传递给下一个函数,以便将它们发送到客户端。现在我使用公共变量来实现我的目标,但我知道这不是一个好的做法,可能有更好的方法来做我正在寻找的事情。这是我的代码:

var myArray; // public array
app.use('/users', findUsers, someOtherFunctions, function(req, res){
  res.send('users.ejs', {
  array: myArray,
  (etc...)
})})
function findUsers(req, res, next){
  db.find({}, function(err, array){
  if(err) throw err;
  if(array.length > 0){
    myArray = array
  }
  })
  next();
}

有没有另一种方法可以在不创建公共变量的情况下做到这一点?谢谢!

如果myArray应该包含特定于此特定请求的内容(并且看起来确实如此),则可能需要使用 res.locals ,有关详细信息,请参阅参考:http://expressjs.com/en/api.html#res.locals。

更新:

因此,使用res.locals您的示例将如下所示:

app.use('/users', findUsers, someOtherFunctions, function(req, res) {
  res.send('users.ejs', {
    array: res.locals.myArray,
    (etc...)
  });
});
function findUsers(req, res, next) {
  db.find({}, function(err, array) {
    if (err) throw err;
    if (array.length > 0) {
      res.locals.myArray = array
    }
    next();
  });
}