Как использовать res.render в любом шаблоне PUG, а не только в представленном? - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно использовать коллекцию учеников в нескольких других шаблонах, кроме "studentinclass".

router.get('/students/:id',passportConfig.isAuthenticated, (req, res) => {
Student.find((err, docs) => {
    if (!err) {
        res.render('studentsinclass', {
            students:docs

        });
    }
    else {
        console.log('Error in retrieving students: '+ err);
    }
});

});

Я изучал около

app.use((req, res, next) => {
res.locals.student = req.student;
next();
});

Но я не могу понять концепцию?Моя схема выглядит следующим образом

const mongoose = require('mongoose');


const studentSchema = new mongoose.Schema({
fullName: {
    type: String
},
classroom: {
            name: {
                    type: String
                    },
            id: {
                    type: mongoose.Schema.Types.ObjectId, 
                    ref: "classroom",
                }
            },

});

const Student = mongoose.model('Student', studentSchema);

module.exports = Student;

С этим кодом я могу использовать

extends layout

block content
ul
each student in students
    li= student.fullName

.. и работает, но мне нужно использовать его и на других страницах.Спасибо, и я прошу прощения, если звучит как глупый вопрос.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Это то, что вам нужно?

app.js

const express = require("express");
const app = express();

app.set("view engine", "pug");
app.set("views", __dirname + "/views");

app.use((req, res, next) => {
  const students = ["irshad", "alex", "lushiku", "pop"];
  res.locals.students = students;
  next();
});

app.get("/", function(req, res) {
  res.render("index", { message: "Hello world" });
});

app.get("/firstpage", function(req, res) {
  res.render("firstpage", { message: "First Page" });
});

app.get("/secondpage", function(req, res) {
  res.render("secondpage", { message: "Second Page" });
});

app.listen(3000);

Students.pug

ul
    each val in students
        li= val

index.pug

h1= message
include students.pug

firstpage.pug

h1= message
include students.pug

secondpage.pug

h1= message
include students.pug
0 голосов
/ 11 апреля 2019

Если вы хотите запустить его на своей домашней странице, сначала вам нужно получить нужную страницу с вашего роутера:

router.get('/', (req, res) => {

});

Теперь внутри вы визуализируете данные, которые будут отображаться на вашей домашней странице, поэтому просто используйте ту же функцию рендеринга снова:

router.get('/', (req, res) => {
  Student.find((err, docs) => {
    if (!err) {
      res.render('home', {
        students: docs
      });
    } else {
      console.log('Error in retrieving students: ' + err);
    }
  });
});

Теперь, если вы перейдете на / или yourdomain.tld/, будет отображена домашняя страница с данными учеников. Для получения данных на домашней странице используйте #{students}!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...