我需要将从前一个函数创建的一些数组传递给下一个函数,以便将它们发送到客户端。现在我使用公共变量来实现我的目标,但我知道这不是一个好习惯,并且可能是一个更好的方法来做我想要的。这是我的代码:
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();
}
有没有其他方法可以做到,而不创建公共变量?非常感谢你!
答案 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();
});
}