Во-первых, давайте начнем с шаблона. Вам не нужно повторно объявлять переменные внутри шаблона, они уже есть для вас. Также обратите внимание, что если переменная не существует, цикл each
не будет выполняться и ничего не будет выведено.
Попробуйте вместо этого:
#products-list.products
each product in product_list
+product_element(product['name'],product['price'],product['image'])
Тогда также будут проблемы внутри миксина. Он ожидает увидеть четыре переменные ввода, но самая первая строка вызывает product.id
, что не является одной из переменных, перечисленных в определении mixin. Вероятно, было бы лучше просто передать весь объект продукта, а не разделять его на отдельные переменные:
mixin product_element(product)
a(href= './produits/' + product.id title='En savoir plus...')
h2= product.name
img(alt='product' src='./assets/img/'+ product.image)
p.price= product.price
small Prix
Что изменит ваш шаблон на это:
#products-list.products
each product in product_list
+product_element(product)
Наконец, вам нужно передать весь список продуктов из маршрута в шаблон. Просто передайте весь набор результатов из базы данных в шаблон следующим образом:
router.get("/produits", (req, res) => {dataBase.getProducts(null,null).then(
(products)=>{
if(products)
{
console.log('Get /produits sending..');
res.render("products", { "product_list": products });
}
}).catch(
(err)=>{
});});
Это передает массив продуктов в шаблон в переменной с именем "product_list".