Передача нескольких разных запросов Mongodb в EJS? - PullRequest
0 голосов
/ 19 декабря 2018

Когда пользователь отправляет форму на моем сайте, я хочу показать им три элемента: элемент для завтрака, элемент для обеда и элемент для ужина.Чтобы сделать это, я подумал, что мне придется по отдельности выполнить db.collection («recipes»). FindOne, а затем вернуть результат этого кода в переменную, которую я мог бы затем передать в EJS, используя res.render («food-plan»).", {завтрак: завтрак});

Однако оказывается, что переменные, собранные из запроса findOne, должны быть переданы в EJS до закрытия запроса findOne, иначе вы не сможете получить к ним доступ.Теперь я застрял с чем-то вроде этого:

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 три раза или поместить его в функцию?

1 Ответ

0 голосов
/ 25 декабря 2018

В food-plan.ejs вы должны использовать forEach Подробнее на https://ejs.co

<%breakfast.forEach(bf){%>
    <p><%bf.name%></p>
<%}%>
...