Заполнить много уровней вложенных документов в mongoose

#javascript #database #mongodb #mongoose

#javascript #База данных #mongodb #mongoose

Вопрос:

Я создаю систему комментариев, в которой комментарий может иметь вложенные комментарии (когда вы комментируете комментарий). Я могу сказать, сколько уровней я хочу заполнить вложенные разделы, но я не знаю, сколько их заранее. Есть ли способ сказать mongoose просто продолжать заполнять подразделы уже заполненных комментариев, пока больше не останется вложенных документов?

CommentModel.js

 const mongoose = require("mongoose");
const schema = mongoose.Schema;

const commentSchema = new schema(
  {
    post: { type: schema.Types.ObjectId, required: true, ref: "post" },
    content: { type: String, required: true },
    votes: { type: Number, required: true },
    user: { type: schema.Types.ObjectId, required: true, ref: "user" },
    subComments: [{ type: schema.Types.ObjectId, ref: "comment" }],
    parentComment: { type: schema.Types.ObjectId, ref: "comment" },
  },
  { timestamps: true }
);

module.exports = Comment = mongoose.model("comment", commentSchema);
 

PostRouter.js

 router.get("/full/:postId", async (req, res) => {
  const postId = req.params.postId;

  const post = await Post.findById(postId).populate({
    path: "comments",
    populate: {
      path: "subComments",
    },
    // how can i populate infinitely down in the path subComments?
  });

  res.json(post);
});
 

Ответ №1:

Пожалуйста, проверьте функцию поиска в графе: https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup /

Пример с массивами можно найти здесь: https://www.oodlestechnologies.com/blogs/how-to-use-graphlookup-in-mongodb /