关于猫鼬的问题。
所以我想建立一个论坛。我写下了我要如何构造它的注释,它看起来像这样(注意mongoose.id不是实际的东西,就像一条评论一样):
const topicGroupSchema = {
_id: mongoose.id,
title: String,
topics: [topicSchema]
};
const topicSchema = {
_id: mongoose.id,
title: String,
topicGroup: topicGroupSchema,
description: String,
latestTopic: String,
posts: [postSchema]
};
const postSchema = {
_id: mongoose.id,
title: String,
body: String,
author: String,
topic: topicSchema,
createdAt: { type: Date, default: Date.now },
replies: [replySchema]
};
const replySchema = {
_id: mongoose.id,
replier: String,
createdAt: { type: Date, default: Date.now },
text: String
};
我这样做正确吗?因此,想法是这样的:
在论坛中,有许多topicGroups
(例如“语言”)
一个topicGroup
可以有多个topic's
(例如“ javascript,” C#“)
一个topic
可以有多个posts
(例如“如何运行此代码”)
一个post
可以有多个replies
(例如“您是否调试过吗?”)
现在让我们说一个新的帖子是在一个论坛(主题)上发表的。
我会这样创建此帖子:
const newPost = {
title: "new post",
body: "my text",
author: "nice guy",
topic: // what to put in here??? I just want to relate it to the topic it was
created at, or can I get rid of it entirely?,
replies: []
}
关键问题在这里,当我已经有几个topicGroups和几个主题,并且在其中一个主题内,我创建了一条新帖子,我应该在{ {1}}模式?该主题的对象?还是我要查询这个特定主题并将新帖子推送到其post
子文档中?
为什么我需要posts
模式中的topic
键,还是我需要它?
我认为我可能会需要它,因为当我这样做时,我可以查询特定的帖子,并询问猫鼬与之相关的post
,对吧?
我这样做完全是错误的,还是要知道什么?当然,我阅读了所有的猫鼬文档,但是对我来说仍然不清楚。