Mongoose TypeError: Вопрос не является конструктором - PullRequest
0 голосов
/ 07 декабря 2018

Есть много вопросов по переполнению стека по этой ошибке.Но их решения, похоже, не работают для меня.Поэтому я наконец решил опубликовать свой вопрос.(это, вероятно, связано с моим незнанием 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: Пользователь не является конструктором

Но ответ не сработал.

_ / \_

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Вы пытаетесь создать новый экземпляр вашей схемы вместо вашей модели.Только ваша модель имеет конструктор, а не вашу схему.Это связано с тем, что вы экспортировали не свою модель, а схему.Необходимо сделать это:

// 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.

0 голосов
/ 07 декабря 2018

Я думаю, вам нужно сделать что-то вроде этого:

module.exports.Question = mongoose.model('Question', QuestionSchema);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...