Express.js将变量从函数传递给视图

时间:2016-01-20 15:11:51

标签: javascript arrays node.js express global-variables

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

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();
}

有没有其他方法可以做到,而不创建公共变量?非常感谢你!

1 个答案:

答案 0 :(得分:0)

如果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();
  });
}