Как бесконечно заполнить модель mongoDB? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь найти способ бесконечно заселять mongoDB.У меня есть коллекция сообщений, в которой есть массив комментариев идентификаторов объектов.Каждый комментарий также имеет массив идентификаторов childComment.Я могу вложить два заполнителя, но эта система комментирования похожа на Reddit в том, что может быть бесконечное количество вложенных комментариев.

router.get('/', (req, res) => {
  Post.find()
    .populate({
      path: 'postComments',
      populate: {
        path: 'commentComments'
      }
     })
    .sort({ date: -1 })
    .then(posts => res.json(posts))
    .catch(err => res.status(404)
      .json({ nopostsfound: 'No posts found'}));
});

Я надеюсь найти способ, которым заполнение commentComments будетпродолжить столько вложенных комментариев, сколько есть.Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018
router.get('/', (req, res) => {
  Post.find()
    .populate([{
      path: 'postComments',
      populate: [{
        path: 'commentComments',
        populate: {
          path: 'childComments'
        }
      }]
     }])
    .sort({ date: -1 })
    .then(posts => res.json(posts))
    .catch(err => res.status(404)
      .json({ nopostsfound: 'No posts found'}));
});

Вы можете заполнять бесконечно заполненный вложенным заполнением.

0 голосов
/ 27 декабря 2018

Это изначально проблемная схема базы данных.Некоторые изменения в схеме значительно облегчат вашу задачу.

Не храните массив идентификаторов комментариев в объектах Post или Comment.Это вызовет проблемы, когда массив станет очень большим, или когда многим клиентам потребуется обновить родительский объект одновременно.

Вместо этого, в каждом объекте Comment также сохраняются идентификаторы публикации, к которой он принадлежит.на Комментарий это в ответ (если есть).Затем, чтобы загрузить комментарии для публикации, найдите каждый комментарий, относящийся к этой записи, и выполните топологическую сортировку для результирующих объектов.

Эта схема имеет ряд основных преимуществ по сравнению с одной.Вы описали - схема совместима с традиционными реляционными базами данных, все комментарии к записи могут быть получены одним запросом, а новые комментарии могут быть добавлены одним запросом вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...