gpt4 book ai didi

node.js - 如何无限填充 mongoDB 模型?

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:52 24 4
gpt4 key购买 nike

我正在尝试找到一种在 mongoDB 中无限填充的方法。我有一个 Posts 集合,其中有一个对象 id 的注释数组。每个评论还有一个 childComment id 数组。我可以嵌套两个填充,但这个评论系统与 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'}));
});

我希望找到一种方法,可以继续填充尽可能多的嵌套评论。非常感谢任何帮助!

最佳答案

这是一个本质上有问题的数据库模式。对架构进行一些更改将使您的任务变得更加容易。

不要在 Post 或 Comment 对象中存储评论 ID 数组。当数组变得非常大,或者当许多客户端需要一次更新父对象时,这会导致问题。

相反,在每个 Comment 对象中,存储它所属的帖子的 ID,以及它响应的 Comment(如果有)的 ID。然后,要加载帖子的评论,请搜索属于该帖子的每条评论并执行 topological sort在生成的对象上。

与您所描述的架构相比,该架构具有许多主要优点 - 该架构与传统关系数据库兼容,可以在单个查询中检索帖子的所有评论,并且可以通过单个插入查询添加新评论。

关于node.js - 如何无限填充 mongoDB 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53939721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com