将对象传递给小胡子模板

pass object to mustache template

我正在开发一个使用 express 和 mustache 模板的项目,我正在尝试使用 res.locals 将对象传递给模板,但它不起作用,

这是代码

exports.menu = function(req,res){
    res.locals.title = "Menu";
    res.locals.class_type ="main_nav";
    MenuDB.GetAvailableLunch()
        .then((list) => {
            res.locals.lunch = list;
            console.log('Promise Resolved');
        })
        .catch((err) =>{
            console.log('Promise rejected', err);
        })
    res.render('menu');
}

我希望来自函数的列表成为我在 mustache 页面上的午餐对象,有什么方法可以做到这一点吗? 我知道我可以这样做

.then((list) => {
            res.render('menu', {
                'lunch': list
            });

但我正在尝试这样做,因为我将有另一个功能 return 数据库中的另一个列表,希望这足够清楚。

构建一个 promise-chain 或独立承诺数组,并在所有问题都解决后才调用 res.render()

例如...

exports.menu = async (req, res) => {
  const [lunch, another] = await Promise.all([
    MenuDB.GetAvailableLunch(),
    anotherFunction(),
  ]);

  res.render("menu", {
    title: "Menu",
    class_type: "main_nav",
    lunch,
    another
  });
};