Я новичок в программировании, а английский sh не мой родной язык, поэтому я постараюсь быть ясным и подробным. Пожалуйста, потерпите меня. Чтобы создать динамические c ссылки между страницами, я пытаюсь заставить мое приложение проверять идентификатор объекта и отображать соответствующее значение объекта, которое соответствует идентификатору объекта. Я также использую e js.
Тексты, которые я хочу, чтобы мое приложение отображало, находятся в 2 коллекциях в моей базе данных, а меню панели инструментов предлагает предварительный просмотр со ссылкой на каждый текст. Нажав на ссылку, вы попадете на страницу, которая динамически создается сервером.
Однако, хотя моя «панель управления» отображает все содержимое коллекций, а также ссылки , Я могу получить доступ только к страницам, ссылающимся на объекты из первой коллекции («уроки»), но не к страницам второй коллекции («exos»). Может ли кто-нибудь сказать мне, что не так с моим кодом, и как я могу исправить это простым способом, пожалуйста? поискав Inte rnet в течение нескольких дней, я, кажется, не могу найти ответ на проблему.
Мой код на данный момент:
require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require('mongoose');
const session = require("express-session");
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");
app.get("/dashBoard", function(req, res){
if(req.isAuthenticated()){
Promise.all([Lesson.find({}), Exo.find({})])
.then(result => {
const [lessons, exos] = result;
// console.log(result)
res.render('dashBoard', {
result: result
});
})
.catch(err => {
// handle error.
console.log(err);
});
} else {
res.redirect("/login");
}
});
app.get("/post/:Id", function(req, res){
if(req.isAuthenticated()){
const requestedId = req.params.Id;
console.log(requestedId);
if(Lesson.findOne({_id: requestedId}) != null || undefined) {
Lesson.findOne({_id: requestedId}, function(err, lesson){
res.render("post", {
envoi: {
title: lesson.title,
content: lesson.content
},
})
})
} else {
Exo.findOne({_id: requestedId}, function(err, exo){
res.render("post", {
envoi: {
title: exo.title,
content: exo.content
}
})
});
};
}
});
Мой E JS Страница на панели управления:
<%- include("partials/header"); -%>
<h1>DashBoard</h1>
<h2>Lessons and exercises</h2>
<% result.forEach(function(result){ %>
<h1><%= result[0].title %></h1>
<p>
<%= result[0].content.substring(0, 100) + " ..." %>
<a href="/post/<%=result[0]._id%>">Read More</a>
</p>
<% }) %>
<br>
<% result.forEach(function(result){ %>
<h1><%= result[1].title %></h1>
<p>
<%= result[1].content.substring(0, 100) + " ..." %>
<a href="/post/<%= result[1]._id %>">Read More</a>
</p>
<% }) %>
<a class="btn btn-light btn-lg" href="/logout" role="button">Log Out</a>
<%- include("partials/footer"); -%>
Мой E JS Страница сообщения:
<%- include("partials/header"); -%>
<h1><%= envoi.title %></h1>
<p><%= envoi.content %></p>
<%- include("partials/footer"); -%>
Наконец, по аналогичной заметке, как я могу заставить мою страницу панели инструментов отображать только имя пользователя (который вошел в систему) в теге h2 под h1 панели инструментов , зная, что пользователи - это моя третья коллекция объектов, и что у этих объектов много свойств, одно из которых - "имя"?
Спасибо, ребята.