Как создавать вложенные комментарии в Node.js(Экспресс) мангуст

#node.js #mongodb #express

Вопрос:

я хочу создать вложенный комментарий с мангустом и Node.js(Экспресс) и я хочу, чтобы мои комментарии на веб-сайте не имели ограничений по вложенности и могли отвечать друг другу бесконечно. У тебя есть идея на этот счет?!!!!! Моя модель такая :

 const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const commentSchema = new Schema({
    user: { type: mongoose.Types.ObjectId, ref: "user", required: true },
    text: { type: String, required: true },
    blog: { type: mongoose.Types.ObjectId, ref: "blog", default: undefined },
    course: { type: mongoose.Types.ObjectId, ref: "course", default: undefined },
    show: { type: Boolean, default: false },
    parent: { type: mongoose.Types.ObjectId, ref: "comment", default: undefined }
}, {
    timestamps: true,
    toJSON: {
        virtuals: true
    }
})
commentSchema.virtual("children", {
    ref: "comment",
    localField: "_id",
    foreignField: "parent"
})
const commentModel = mongoose.model("comment", commentSchema);
module.exports = commentModel;
 

я хочу, чтобы мои комментарии выглядели так
, я очень ищу и спрашиваю на форумах, Некоторые люди говорили мне использовать графики, я сделал это, но я не получил ответа

  "comments": [
    {
      "show": false,
      "_id": "60e6952102429a2d40da865b",
      "text": "comment",
      "blog": "60e67836205c8932c06343d9",
      "user": {
        "_id": "60e4983c0310031c7011ca3f",
        "name": "test",
        "email": "test@google.com"
      },
      "createdAt": "2021-07-08T06:03:13.473Z",
      "updatedAt": "2021-07-08T06:03:13.473Z",
      "__v": 0,
      "children": [
        {
          "show": false,
          "_id": "60e6956102429a2d40da8667",
          "text": "child 3",
          "blog": "60e67836205c8932c06343d9",
          "parent": "60e6952102429a2d40da865b",
          "user": {
            "_id": "60e4983c0310031c7011ca3f",
            "name": "test",
            "email": "test@google.com"
          },
          "createdAt": "2021-07-08T06:04:17.348Z",
          "updatedAt": "2021-07-08T06:04:17.348Z",
          "__v": 0,
          "children": [
         {
          "show": false,
          "_id": "60e6956102429a2d40da8667",
          "text": "child 3",
          "blog": "60e67836205c8932c06343d9",
          "parent": "60e6952102429a2d40da865b",
          "user": {
            "_id": "60e4983c0310031c7011ca3f",
            "name": "test",
            "email": "test@google.com"
          },
          "createdAt": "2021-07-08T06:04:17.348Z",
          "updatedAt": "2021-07-08T06:04:17.348Z",
          "__v": 0,
          "children": [childs.... , children[childs....]],
          "id": "60e6956102429a2d40da8667"
        }
         ],
          "id": "60e6956102429a2d40da8667"
        }
      ],
      "id": "60e6952102429a2d40da865b"
    },
 

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

1. Mongodb предназначен специально для вложенных объектов. Просто сохраните поле комментариев в виде массива комментариев корневого уровня с дочерними полями и продолжайте нажимать его там. Другой способ иметь родительский (один идентификатор ссылки ) и дочерние комментарии (массив идентификаторов) для каждого комментария. Просто заполните содержимое, чтобы получить соответствующие данные.