Mongoose 填充不适用于 nextjs 应用程序。架构尚未注册

问题描述 投票:0回答:3

我一直在尝试使用课程文档填充 LessonId 列表。但我收到了错误,

Schema hasn't been registered for model \"Lesson\".\nUse mongoose.model(name, schema)

if (req.method === "GET") {
    Course.findById(courseId)
        .populate('lessons').then(course => {
            res.json(course);
        }).catch(err => {
            res.json({ error: err.title + ' : ' + err.message });
        });
}

现在,如果我导入注册了 LessonSchema 的 Lesson 模型,代码就可以工作。但我没有直接使用此文件中的课程模型,因此我发现很奇怪,我必须导入一些我不会使用的东西,只是为了使其他一些功能正常工作。有适当的方法吗?或者以某种方式在数据库连接时注册所有模型?

谢谢!

mongoose next.js mongoose-populate
3个回答
7
投票

我遇到了这个问题并能够修复,感谢https://stackoverflow.com/a/47038544/2865073

我通过明确声明模型来修复它:

Customer.findOne({}).populate({ path: 'created_by', model: User })

0
投票

我的以前也是这样的

let events = await Event.find().populate({ path: "orders", populate: { path: "userId", model: "User",  }, });

它不起作用,所以我将其更改为这个,并确保我已在文件顶部导入了我的用户和订单模型

  let events = await Event.find().populate({
  path: "orders",
  model:Order,
  populate: {
    path: "userId",
    model: User, 
  },
});

-2
投票

最终创建了一个

models.js
内部模型文件夹,用于导入所有其他模型并导出它们以确保模式得到注册。

© www.soinside.com 2019 - 2024. All rights reserved.