首页 > 解决方案 > 为什么我的猫鼬数组没有填充,甚至没有存储值?

问题描述

问题

我知道 Stack 上有很多关于这个问题的类似问题,但我无法用这些帖子解决它。

我正在创建一个简单的论坛应用程序。我有 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;

如果我创建一个新论坛并将其保存在数据库中。当然还没有子论坛。 然后我创建一个这样的子论坛(我提供刚刚创建的论坛的 id req.body.forum):

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 中,它看起来像这样:

在此处输入图像描述

所以可以清楚的看到数组中没有子论坛。

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

标签: javascriptnode.jsmongodbmongoose

解决方案


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


推荐阅读