问题描述
我一直在尝试使用课程文档填充课程 ID 列表。但我收到错误,
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 });
});
}
现在,如果我导入注册了课程架构的课程模型,代码就可以工作。但是我没有直接在这个文件中使用课程模型,所以我觉得很奇怪我必须导入一些我不会使用的东西,只是为了让其他功能工作。有没有合适的方法来做到这一点?或者以某种方式在数据库连接时注册所有模型?
谢谢!
解决方法
我遇到了这个问题并且能够修复多亏 https://stackoverflow.com/a/47038544/2865073
我通过明确声明模型来修复它:
public static class SwaggerConfigExtension
{
public static IApplicationBuilder
ConfigureSwaggerUi(
this IApplicationBuilder app,IApiVersionDescriptionProvider apiVersionProvider)
{
return app.UseSwaggerUI(
options =>
{
options.DocExpansion(
Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.List);
// Present API version in descending order
var versionDescriptions = apiVersionProvider
.ApiVersionDescriptions
.OrderByDescending(desc => desc.ApiVersion)
.ToList();
foreach (var description in versionDescriptions)
{
options.SwaggerEndpoint(
$"/swagger/{description.GroupName}/swagger.json",description.GroupName.ToUpperInvariant());
}
}
);
}
}
,
最终在模型文件夹中创建了一个 statistics.pvariance
,用于导入所有其他模型并导出它们以确保架构得到注册。