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

问题描述

我一直在尝试使用课程文档填充课程 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,用于导入所有其他模型并导出它们以确保架构得到注册。