我一直在尝试使用课程文档填充 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 模型,代码就可以工作。但我没有直接使用此文件中的课程模型,因此我发现很奇怪,我必须导入一些我不会使用的东西,只是为了使其他一些功能正常工作。有适当的方法吗?或者以某种方式在数据库连接时注册所有模型?
谢谢!
我遇到了这个问题并能够修复,感谢https://stackoverflow.com/a/47038544/2865073
我通过明确声明模型来修复它:
Customer.findOne({}).populate({ path: 'created_by', model: User })
我的以前也是这样的
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,
},
});
最终创建了一个
models.js
内部模型文件夹,用于导入所有其他模型并导出它们以确保模式得到注册。