Я пытаюсь перебрать объект, исходящий из app.js. Я использую каждый цикл в PUG/JADE, чтобы использовать его значение для печати некоторых значений. Но li не получает значение переменной цикла
Примечание : Я получаю «post.title» и «post.body» ниже 4 раз, потому что они исходят из базы данных mongo, а я сделал ровно 4 записи в базе данных. Кроме того, это также означает, что объект правильно переходит на страницу индекса, но li не получает значение переменной цикла.
Вывод, который я получаю
. = post.title
. = post.body
. = post.title
. = post.body
. = post.title
. = post.body
. = post.title
. = post.body
Что я хочу
Title of the post
body of the post
Title of another post
Body of another post
and so on....
Мой код
---- index.pug ----
block content
ul
each post in posts
li = post.title
li = post.body
---- app.js ----
let Post = require('./models/post');
app.get('/', function(req, res){
Post.find({}, function(err, posts){
if (err){
console.info(err);
} else {
res.render('index', {
title:'Posts',
posts: posts
});
}
});
});
Что еще я пробовал
Я создал постоянный массив прямо над циклом для проверки и повторил этот массив. Но это дало мне тот же результат, что и
. = name
. = name
. = name
не знаю почему. Код для этого ниже.
block content
- const names = ["Sami", "Abeer", "Hassaan"];
ul.list-group
each name in names
li = name
Уберите пробел между li =
, чтобы получилось li= name
. Пробел указывает, что знак равенства должен быть содержимым тега.
Полный пример вашего index.pug:
block content
ul
each post in posts
li= post.title
li= post.body
Понятный. Это просто мопс. Итак, вы можете сделать: h1 Мой супер классный заголовок Вот почему h1 = <- Это знак равенства, который будет строкой. В то время как: h1= <- это приведет к сбою, потому что теперь он ожидает javascript
Спасибо, это сработало отлично. Не знаю, почему они не оставляют пробел перед знаком =. мой стиль программирования - ставить пробел перед знаком =.