首页 > 解决方案 > Mongoose MVC - TypeError:ItemModel 不是构造函数

问题描述

我试图通过定义/导出模型并在控制器中使用此模型来遵循 MVC 模式。但是,我收到一个错误:TypeError: ItemModel is not a constructor。

我已经遵循了其他几个示例,但无法理解为什么会发生此错误。

文件结构如下:

src\db_test.js

src\controller\Item.js

src\models\Item.js

const mongoose = require('mongoose');

const ItemSchema = new mongoose.Schema({
    "name": String
});

var ItemModel =  mongoose.model('Item', ItemSchema);
module.export = ItemModel;

控制器\Item.js

var ItemModel = require('../models/Item');

var itemController = {};

itemController.save = function(obj) {
    
    var model = new ItemModel(obj); // Error here
    model.save(function(err, item) {
        if (err) {
            console.log('Failed to save');
            return;
        }
        console.log('saved successfully!');
    });
}

module.exports = itemController;

db_test.js

const ItemController = require('./controller/Item');

var testItem = {
    "name": "ItemName"
};

ItemController.save(testItem);

输出:

\src\controller\Item.js:18
    var model = new ItemModel(obj); // Error here
                ^

TypeError: ItemModel is not a constructor
    at Object.itemController.save (\src\controller\Item.js:5:4)
    at Object.<anonymous> (\src\db_test.js:7:6)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

标签: javascriptnode.jsmongodbmodel-view-controllermongoose

解决方案


我想有一封信不见了。

项目.js

module.export = ItemModel

改变

module.exports = ItemModel

推荐阅读