首页 > 解决方案 > 让评论显示在我的帖子 Node.js Mongoose 下

问题描述

我正在尝试在我的节点应用程序中为文章实现评论系统。

目前我可以让所有评论显示在文章下,但我只想显示与文章直接相关的评论。

我已经确认它们确实被添加到了数组中。

评论.js


const CommentSchema = new mongoose.Schema({
    content: { type: String, required: true },
    article : { type: Schema.Types.ObjectId, ref: 'Article' },
    createdAt: {
        type: Date,
        default: Date.now
    }
},{timestamps: true});

module.exports = mongoose.model('Comment', CommentSchema);

文章.js

const ArticleSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  description: {
    type: String
  },
  markdown: {
    type: String,
    required: true
  },
  createdAt: {
    type: Date,
    default: Date.now
  },
  slug: {
    type: String,
    required: true,
    unique: true
  },
  sanitizedHtml: {
    type: String,
    required: true
  },
  img: {
    type: String
  },
  type:{
    type: String
  },
  comments:[{ type: Schema.Types.ObjectId, ref: 'Comment' }]
}, {timestamps: true});

文章.js

const express = require('express')
const Article = require('./../models/article')
const Comment = require('./../models/comment')
const router = express.Router()
const multer = require('multer')
const path = require('path')

router.get('/:slug', async (req, res) => {
  const article = await Article.findOne({ slug: req.params.slug })
  const comments = await Comment.find({})
  res.render('articles/show', { article: article, comments: comments });
})

*该解决方案有效,谢谢。

标签: node.jsmongoose

解决方案


像这样使用populate

await Article.findOne({ slug: req.params.slug }).populate("comments")

检查填充文档


推荐阅读