问题:我是否将我的孩子评论嵌入单一家长评论中?
概述:
创建评论系统
评论可以有孩子
现在,每个评论子项或父项都存储为名为SubmissionCommentsSchema
的集合中的一条记录
儿童评论有一个键=>值parent_id
=> Object ID
其中Object ID
引用了parent_id
null
的父评论。
架构看起来像:
SubmissionCommentsSchema = new Schema({
id : Schema.ObjectId,
submission_id : {
type: String
},
parent_id : {
type: String,
default: null
},
comment : {
type: String,
required: true
},
user_id: {
type: String,
required: true
},
username : {
type: String,
required: true
},
created : {
type: Date,
default: Date.now
},
reply : {
type: Boolean,
default: false,
required: true
},
deleted : {
type: Boolean,
default: false
}
});
父评论的示例:
{ submission_id: '51899313634afe0000000051',
comment: 'asdfadsf',
user_id: '516e173f48670b44d20004dc',
username: 'bobcobb',
_id: 51899338634afe0000000055,
deleted: false,
reply: false,
created: Tue May 07 2013 16:50:16 GMT-0700 (PDT),
parent_id: null },
引用上述父评论的子评论示例:
{ submission_id: '51899313634afe0000000051',
comment: 'Testing one two four',
user_id: '516b45f8ac6a1b488e000001',
username: 'testing',
_id: 519d93a83867470000000146,
deleted: false,
reply: false,
created: Wed May 22 2013 20:57:28 GMT-0700 (PDT),
parent_id: '51899338634afe0000000055' },
parent_id
s!== null
。如果是这样,那么我将它们放在一个列表中并将它们附加到父注释中,然后将它们转储到视图中。我是否应该将原始父评论中的子评论存储为嵌套数组?
答案 0 :(得分:3)
可能不是因为如果特定线程收到许多回复,您可能会溢出文档大小限制。
您可能想要做的是在注释中添加一个整数depth
字段,这样您就可以轻松获取前两个级别,显示它们,然后仅在用户展开时加载后续级别评论树。
有时也值得维护一系列祖先ID,以便您可以快速获取任何子树,或者给予特定注释的深层链接,可以快速找出需要加载“上方”以显示包含它的最小扩展注释树。