0

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

但是,从 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}); 
            });
        });

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

4

1 回答 1

0

在 meal-plan.ejs 中,您应该使用 forEach 在https://ejs.co上查看更多信息

<%breakfast.forEach(bf){%>
    <p><%bf.name%></p>
<%}%>
于 2018-12-25T12:39:52.527 回答