首页 > 解决方案 > expressjs 返回具有相同标签的项目列表

问题描述

我的 PostSchema 是这样的:

    let PostSchema = new mongoose.Schema({
    content: String,
    time: Date,
    likes: Number,
    image: String,
    tag: String 
    });

let Post = mongoose.model("Post", PostSchema);

module.exports = Post;

我想获得所有具有相同标签的帖子的列表


这是我的代码来渲染它。它在文件夹路由/帖子中

    router.get("/tag", function(req, res) {
    Post.find({ subreddit: req.params.tag }).lean()
      .then(posts => {
        res.render("posts/index", { posts });
      })
      .catch(err => {
        console.log(err);
    });
});

当然,我有带有 index.ejx 的 views/posts 文件夹来路由视图

    <li class="list-group-item">                
           <div class="text-right">
               <span>Tags: </span><a href="/tag/<%=post.tag%>"><%= post.tag %></a>
           </div>
    </li>

我真的不明白我是如何或在哪里弄错了。我尝试按照教程的说明进行操作:https ://www.makeschool.com/academy/track/standalone/reddit-clone-in-node-js/create-subreddits

标签: node.jsmongodbexpress

解决方案


也许尝试修剪您搜索的值:

    router.get("/tag", function(req, res) {
        let tag = req.params.tag;
        if (!tag) {
          throw new Error('No tag was found');
        }

        tag = tag.trim();

        Post.find({ subreddit: req.params.tag }).lean()
          .then(posts => {
            res.render("posts/index", { posts });
          })
          .catch(err => {
            console.log(err);
        });
    });

推荐阅读