Как исправить ошибку рендеринга страницы в экспресс-приложении

#javascript #node.js #mongodb #express #pug

#javascript #node.js #mongodb #экспресс #pug

Вопрос:

Мое приложение представляет собой простой блог, который отображает схему заголовка блога, записи, даты, а затем страницу редактирования / удаления, которая еще не завершена. Редактирование / удаление будет для выбранной записи, и вы перейдете на страницу …/blogList /blogEdit / _id. Когда я нажимаю на кнопку редактирования / удаления в сообщении в блоге, это выдает ошибку 404.

app.js

 var createError = require('http-errors');
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var debug = require('debug')('app');
require('./app_server/models/db');

const todoRouter = require('./app_server/routes/index');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'app_server', 'views'));
app.set('view engine', 'jade');

...

app.get('/', todoRouter);
app.get('/blogAdd', todoRouter);
app.get('/blogList', todoRouter);
  

index.js

 var express = require('express');
var router = express.Router();
var ctrlHome = require('../controllers/home');
var ctrlBlogA = require('../controllers/blog');
var ctrlBlogL = require('../controllers/blogL');

router.get('/', ctrlHome.bHome);
router.get('/blogAdd', ctrlBlogA.bAdd);
router.get('/blogList', ctrlBlogL.bList);
router.get('/blogList/blogEdit/:id', ctrlBlogL.eList);
router.get('/blogList/blogDelete/:id', ctrlBlogL.dList);

module.exports = router;
  

controller/blogL.js

 module.exports.bList = function(req, res){
        res.render('blogList', {
                title: 'Blog List',
                pageHeader: {
                        title: 'Blog List',
                },
                blog: [{
                                blogTitle: 'We did one!',
                                blogEntry: 'I hope this gets put into my blog',
                                blogDate: '9/22/2020'
                },{
                                blogTitle: 'We did two!',
                                blogEntry: 'I did it',
                                blogDate: '9/24/2020'
                },{
                                blogTitle: 'Third entry',
                                blogEntry: 'complete',
                                blogDate: '9/24/2020'
                }]
        });
};

module.exports.eList = function(req, res){
                res.render('blogEdit', {title: 'Blog Edit'});
};
module.exports.dList = function(req, res){
                res.render('blogDelete', { title: 'Blog Delete' });
};
  

blogList.jade — часть, которая должна отображать все схемы

       p
      each blogs in blog
       .col-xs-12.list-group-item
        h4
         p
          h4= blogs.blogTitle
         p
          h4= blogs.blogEntry
         p
          h4= blogs.blogDate
          //error is here I assume
          a.btn.btn-default.pull-right(href="/blogEdit") Edit
          a.btn.btn-default.pull-right(href="/blogDelete") Delete
  

Комментарии:

1. У вас есть, href="/blogEdit" но маршрут /blogList/blogEdit/:id'

2. Да, правильно сказано.

3. Когда я добавляю /blogList/blogEdit/:id, он все равно не будет отображать страницу blogEdit или blogDelete

Ответ №1:

В app.js должен быть app.get(‘…’), в котором есть /blogList/…/_id , чтобы приложение могло использовать страницы.