将多个不同的Mongodb查询传递给EJS?

时间:2018-12-19 13:50:21

标签: mongodb express ejs

当用户在我的网站上提交表单时,我想向他们显示三个项目:早餐项目,午餐项目和晚餐项目。为此,我认为我必须分别执行db.collection(“ recipes”)。findOne,然后将该代码的结果返回到变量中,然后可以使用res.render(“ meal-plan ”,{breakfast:breakfast});

但是,事实证明从findOne查询收集的变量必须在关闭findOne查询之前传递给EJS,否则您将无法访问它们。现在,我陷入了这样的困境:

var breakfast;    
MongoClient.connect('mongodb://localhost', function (err, client) {
            if (err) throw err;

            var db = client.db('food_app');

            db.collection("recipes").findOne({ "breakfast" : true}, function(err, result) {
                if (err) {
                    console.log(err);
                } else {
                    console.log(result.title);
                    breakfast = result;
                    client.close();
                }
            res.render("meal-plan.ejs", {breakfast:breakfast}); 
            });
        });

这成功地使我可以将Breakfast变量传递给EJS。但是,我想传递多个变量(早餐,午餐,晚餐)。如果我只能传递一个变量,该怎么办?在多个查询中使用多个res.renders是否可以接受,所以我可以复制/粘贴MongoClient代码3次或将其放入函数中?

1 个答案:

答案 0 :(得分:0)

在meat-plan.ejs中,您应该使用forEach 在https://ejs.co

中查看更多信息
import utilsMicky from 'utils/micky';
import containersMicky from'containers/micky';
import componentsMicky from 'components/micky';