问题

我知道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);
  }
});


我得到的回复是它已经创建。新的子论坛如下所示:

javascript - 为什么我的 Mongoose 数组没有被填充,甚至没有存储值?-LMLPHP

但是,当我搜索所有论坛并希望使用子论坛填充它时,它将无法正常工作。在Robomongo中,它看起来像这样:

javascript - 为什么我的 Mongoose 数组没有被填充,甚至没有存储值?-LMLPHP

因此,您可以清楚地看到数组中没有子论坛。

有什么问题,我该如何解决?

最佳答案

我看不到您的代码中实际上将subforum id推送到forum.subforum数组的任何地方。创建subforum并将其保存后,还必须将该subforum id推入forum.subforums数组并进行保存。

10-06 15:06