如何使用猫鼬和虚拟填充建模嵌套注释?

问题描述

我参加了Jonas Schmedtmann的NodeJS课程,他在对两个集合之间的关系建模时进行了解释,如果这是一对多关系并且可以无限期增长,则不应使用子引用,而应使用父引用。例如,我们有一个注释模式:

const commentSchema = new mongoose.Schema({
    text: String,author: {type: mongoose.schema.ObjectId,ref: 'User'},post: {type: mongoose.schema.ObjectId,ref: 'Post'}
},{ timestamps: true });

,我们有用于发布的以下架构(使用父级引用并填充):

const postSchema = new mongoose.Schema({
    text: String,...
    author: {type: mongoose.schema.ObjectId,},{ 
    timestamps: true,toJSON: { virtuals: true },toObject: { virtuals: true } 
});

// using virtual populate
postSchema.virtual('comments',{
    ref: 'Comment',foreignField: 'post',localField: '_id'
});

// then I should populate it in controllers

它工作正常,当我请求发布信息时,它会返回正确的响应以及与之相关的注释,但是当我想实现嵌套的注释或答复时,就会出现问题。我不知道该如何实现,但即使是回复,也要让它保持父级引用。

我已经考虑过了,如果我在注释模式中添加一个额外的字段并命名为parent并将其引用为已回复的注释,那么当我再次发出请求时,注释的响应就会进入在同一级别上,它不代表注释的嵌套性,因此我无法显示与父注释不同的答复(您知道我的意思)。

实际上,我的问题是如何在保留父引用的同时做出嵌套的响应?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...