=====helper (свои подстановки в шаблон)===== **server.js** const express = require('express');//Подключаем модуль const path = require('path');//Модуль для работы с путями к файлам и папкам const csrf = require('csurf');//CSRF - защита (Cross-Site Request Forger) const flash = require('connect-flash');//серверные сообщения const exphbs = require('express-handlebars');//Подключаем шаблонизатор const db = require('mongoose'); //библиотека для mongodb const hbs= exphbs.create({//Настройки шаблонизатора defaultLayout: 'main',//Шаблон по умолчанию, основной, (template/layouts/main.hbs) extname: 'hbs', //Расширение шаблонов, пользовательское. По умолчанию express-handlebars helpers: require('./helpers/hbs-helpers')//подключаем свои операторы }); app.engine('hbs', hbs.engine);//Подключени шаблонизатора к express, регестрируем движок app.set('view engine', 'hbs');//Запускаем шаблонизатор, используем app.set('views', 'template');//Указываем папку с шаблонами app.use(express.static(path.join(__dirname,'public')));//Статические папки для хранения стилей картинок app.use(express.urlencoded({extended: true})); **helpers/hbs-helpers.js** /** * Свои операторы для шаблонов * @type {{ifeq(*, *, *): *}} */ module.exports ={ ifeq(a, b, options){//Оператор сравнения if(a.toString() === b.toString()){ return options.fn(this);//Если значения совподают } return options.inverse(this);//Если значения не совподают } }; **template/courses.hbs** {{#if courses.length}}
{{#each courses}}
{{title}}

{{price}}

{{#ifeq userId._id @root.userId}} {{/ifeq}}
{{#if @root.isAuth}}
{{/if}}
{{/each}}
{{else}}

Нет записей

{{/if}}