问题
我知道Stack上有许多与此问题类似的问题,但是我无法通过这些帖子解决。
我正在创建一个简单的Forum应用程序。我有2条创建论坛和子论坛的途径。
一个论坛可以有许多子论坛。
一个子论坛分配给一个论坛。
我的论坛架构如下所示:
const mongoose = require("mongoose");
const forumSchema = new mongoose.Schema({
title: String,
subTitle: String,
posts: [{ type: mongoose.Schema.Types.ObjectId, ref: "Post" }],
subForums: [{ type: mongoose.Schema.Types.ObjectId, ref: "Subforum" }]
});
const Forum = mongoose.model("Forum", forumSchema);
module.exports = Forum;
子论坛的架构:
const mongoose = require("mongoose");
const subForumSchema = new mongoose.Schema({
title: String,
subTitle: String,
posts: [{ type: mongoose.Schema.Types.ObjectId, ref: "Post" }],
forum: { type: mongoose.Schema.Types.ObjectId, ref: "Forum" }
});
const SubForum = mongoose.model("Subforum", subForumSchema);
module.exports = SubForum;
如果我创建一个新论坛并将其保存,则将其保存在数据库中。当然还没有子论坛。
然后,我创建一个像这样的子论坛(我用
req.body.forum
提供刚创建的论坛的ID):router.post("/newSub", verify, async (req, res) => {
// TODO: Only admin can do this
const subForum = new SubForum({
title: req.body.title,
subTitle: req.body.subTitle,
forum: req.body.forum
});
try {
await subForum.save();
res.send(subForum);
} catch (err) {
res.status(400).send(err);
}
});
我得到的回复是它已经创建。新的子论坛如下所示:
但是,当我搜索所有论坛并希望使用子论坛填充它时,它将无法正常工作。在Robomongo中,它看起来像这样:
因此,您可以清楚地看到数组中没有子论坛。
有什么问题,我该如何解决?
最佳答案
我看不到您的代码中实际上将subforum
id推送到forum.subforum
数组的任何地方。创建subforum
并将其保存后,还必须将该subforum id
推入forum.subforums
数组并进行保存。