【问题标题】:Mongoose TypeError: Question is not a constructorMongoose TypeError:问题不是构造函数
【发布时间】:2019-05-09 08:02:00
【问题描述】:

关于这个错误的堆栈溢出有很多问题。但是他们的解决方案似乎对我不起作用。所以我终于决定发布我自己的问题。 (这可能与我对 javascript/node/mongoose 缺乏了解有关)

我的模块是 -

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

var OptionSchema = new Schema({
    option_text: {type: String, required: true},
    is_correct: {type: Boolean, required: true, default: false}
});

var QuestionSchema = new Schema({
    question_text: {type: String, required: true},
    subText: {type: String, required: true},
    type: {type: String, required: true},
    difficulty: {type: String, required: true, default: 'Easy'},
    status: {type: String, required: true, default: 'Private'},
    options_required: {type: Boolean, required: true, default: false},
    explanation: {type: [String], required: true},
    created_by: {type: String, required: true, default: 'Anonymous'},
    created_at: {type: Date, required: true, default: Date.now()},
    options: [OptionSchema]
});



// Export the model
module.exports.Question = QuestionSchema;
module.exports.Option = OptionSchema;

我的控制器有这个 -

//create
exports.question_create = function (req, res, next) {
    let qu = new Question(
        {
            question_text: req.body.question_text,
            subText: req.body.subText,
            type: req.body.type,
            difficulty: req.body.difficulty,
            status: req.body.status,
            options_required: req.body.options_required,
            explanation: req.body.explanation,
            created_by: '',
            created_at: Date.now(),
            option: req.body.option
        }
    );

    qu.save(function (err) {
        if (err) {
            return next('some error occurred ' + err);
        }
        res.send('question Created successfully')
    })
};

我能找到的最接近的问题是在这个链接上 - Mongoose TypeError: User is not a constructor

但答案没有用。

_/\_

【问题讨论】:

  • 你需要从模式创建模型
  • @iofjuupasli 怎么样?

标签: javascript node.js mongodb express mongoose


【解决方案1】:

我认为您需要按照以下方式做一些事情:

module.exports.Question = mongoose.model('Question', QuestionSchema);

【讨论】:

  • 我试过这个,但是当我尝试创建一个新问题时我仍然遇到这个问题。 :(
【解决方案2】:

您正在尝试创建架构的新实例而不是模型。只有你的模型有一个构造函数,而不是你的模式。这是因为您没有导出模型而是导出了架构。需要这样做:

// Export the model
module.exports.Question = mongoose.model('Question', QuestionSchema);
module.exports.Option = mongoose.model('Option', OptionSchema);

然后你可以在你的控制器中导入模型:

var Question = require('./models/question');
var Option = require('./models/option');

假设您的模型位于 models 文件夹中。

【讨论】:

  • 我试过这个,但是当我尝试创建一个新问题时我仍然遇到这个问题。 :(
猜你喜欢
  • 2017-03-09
  • 2017-04-08
  • 1970-01-01
  • 2018-08-22
  • 2019-08-14
  • 2018-06-27
  • 2016-04-16
相关资源
最近更新 更多