首页 > 解决方案 > 尚未为模型“流派”注册架构。使用 mongoose.model(name, schema)

问题描述

理解这个错误信息。

尚未为模型“流派”注册架构。使用 mongoose.model(name, schema) 抛出了我,因为我没有看到对 Genre 的调用,它正在加载模型书

详情如下。

这是在学习 mdn 教程时 > https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data

我目前的回购> https://github.com/aspiringguru/mdn_express_nodejs_skeleton/tree/c347992765fadebe7af233c0f03ef222cbf4803f

错误在 catalog.js router.get('/book/:id', book_controller.book_detail) 中的这条路线上;

https://github.com/aspiringguru/mdn_express_nodejs_skeleton/blob/c347992765fadebe7af233c0f03ef222cbf4803f/routes/catalog.js

到 bookController.js 中的 exports.book_detail

https://github.com/aspiringguru/mdn_express_nodejs_skeleton/blob/c347992765fadebe7af233c0f03ef222cbf4803f/controllers/bookController.js

错误似乎在此代码部分中

async.parallel({
    book: function(callback) {

        Book.findById(req.params.id)
          .populate('author')
          .populate('genre')
          .exec(callback);
    },
    book_instance: function(callback) {
      BookInstance.find({ 'book': req.params.id })
      .exec(callback);
    },
}, function(err, results) {
     console.log("exports.book_detail : function(err, results) ")

但我没有看到上面的错误消息

下面的控制台错误消息。

export.book_detail 开始 exports.book_detail :函数(错误,结果)exports.book_detail :错误:MissingSchemaError:模式尚未注册模型“流派”。使用 mongoose.model(name, schema) app.use(function...) err.message=Schema 尚未为模型“流派”注册。

'err.message=' 在 app.py 第 62 行。

我已经看到其他 stackoverflow/stachexchange 问题,其中解决方案将 mongoose.connect 移到模型导入之上,这对我不起作用。

真正让我困惑的部分是为什么错误是因为没有为模型“流派”注册模式的错误,我本来希望模型书。

标签: node.jsmongodbmongoose

解决方案


问题是Genre模型的名称实际上是命名的GenreInstance,而不是Genre

调用端点将导致应用程序尝试基于一个名为Genre但不存在的模型填充文档,因此 Mongoose 会抛出一个错误,说它找不到该模型的模式。

将模型重命名为“流派”应该可以解决它:

module.exports = mongoose.model('Genre', GenreSchema);

推荐阅读