Express.js应用程序错误:帖子ID为类别名称

编程入门 行业动态 更新时间:2024-10-09 06:22:16

Express.js<a href=https://www.elefans.com/category/jswz/34/1771452.html style=应用程序错误:帖子ID为类别名称"/>

Express.js应用程序错误:帖子ID为类别名称

我正在使用blogging application,Express和MongoDB开发EJS(单击链接以查看GitHub回购)。>

我有帖子

,它们被归类为类别,每个都在其自己的集合中。

我按类别筛选帖子:Sport

类别中的所有帖子都显示在http://localhost:3000/sportTravel类别中的所有帖子都显示在http://localhost:3000/travel

为此,我引入了路线router.get('/:catname', postsController.getPostsByCategory);

const express = require('express');
const postsController = require('../../controllers/front-end/posts');

// Express router
const router = express.Router();

// Get Posts
router.get('/', postsController.getPosts);

// Get Posts by Category
router.get('/:catname', postsController.getPostsByCategory);

// Get Single Post
router.get('/:id', postsController.getSinglePost);

module.exports = router;

类别确实按类别进行过滤,但是router.get('/:catname',postsController.getPostsByCategory);和router.get('/:id', postsController.getSinglePost);发生冲突,以致不再显示单个帖子

这是因为帖子ID用于类别路由。

在控制器中,我有两种方法getPostsByCategorygetSinglePost

exports.getPostsByCategory = async (req, res, next) => {

    function titleize(slug) {
        var words = slug.split("-");
        return words.map(function(word) {
            return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();
        }).join(' ');
    }

    const postCategory = new RegExp(titleize(req.params.catname),"ig");

    const singleCategory = await Category.findOne({cat_name:postCategory})

    const posts = await Post.find({ category : singleCategory }, (err, posts) => {
        if (err) {
            console.log('Error: ', err);
        } else {
            res.render('default/index', {
                moment: moment,
                layout: 'default/layout',
                website_name: 'MEAN Blog',
                page_heading: 'XPress News',
                page_subheading: 'A MEAN Stack Blogging Application',
                posts: posts.reverse(),
            });
        }
    }).populate('category');
};

exports.getSinglePost = (req, res, next) => {
    let id = req.params.id;
    if (id.match(/^[0-9a-fA-F]{24}$/)) {
        Post.findById(id, function(err, post) {
            if (err) {
                console.log('Error: ', err);
            } else {
                res.render('default/singlepost', {
                    layout: 'default/layout',
                    website_name: 'MEAN Blog',
                    post: post
                });
            }
        });
    }
};

我想以在类别中显示帖子的URL保持模式http://localhost:3000/category-name的方式解决此问题。

我该如何实现?

我正在使用Express,EJS和MongoDB开发博客应用程序(单击链接以查看GitHub存储库)。我有按类别分组的帖子,每个帖子都有自己的收藏集。我筛选...

回答如下:

这些实际上都是同一条路线:

更多推荐

Express.js应用程序错误:帖子ID为类别名称

本文发布于:2024-05-07 06:20:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754770.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:应用程序   类别   错误   名称   帖子

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!