NodeJS Ошибка типа: сообщение не является конструктором - PullRequest
0 голосов
/ 28 февраля 2020

Я получил формуляр и хочу отправить ответное сообщение после его отправки. Используется Node v13.3.0, "express": "^ 4.17.1", "express -handlebars": "^ 3.1.0", "express -session": "^ 1.17.0", "fla sh": "^ 1.1.0", "handlebars": "^ 4.7.3", "mon goose": "^ 5.9.2"

Post. js

const
    mongoose = require('mongoose');

const Schema = mongoose.Schema; // get props

const PostSchema = new Schema({
    // define props --> required for a post

    surname: {
        type: String,
        required: true
    },
    name: {
        type: String,
        required: true
    },
    biography: {
        type: String,
        required: true,
    },
    profilpicture: {
        type: Object,
        required: true,
    }


});

module.exports = mongoose.model('Post', PostSchema);

Контроллер. js

const Post = require('../models/postModel').Post;
module.exports = {
submitPosts: (req, res) => {
        // res.render('admin/posts/submit');
        // Check the attributs from create.handlebars for success or error message
        const newPost = new Post( {
            surname: req.body.surname,
            name: req.body.name,
            biography: req.body.biography,
            profilpicture: req.body.profilpicture
        });
        // Safe new posts
        newPost.save().then(post => {
            console.log(post);
            flash('success-message', 'Yay its fine')
            res.redirect('/admin');
        });
    },
}

Файл формы, который я использую для каждого имени ввода = " attribut " Если удалить Post (Controller. js) выдает еще одну ошибку:

(узел: 2296) UnhandledPromiseRejectionWarning: ValidationError: Ошибка проверки сообщения: требуется фамилия: Path surname., name: Path name требуется., Биография: требуется путь biography., Profilpicture: требуется путь profilpicture. и сайт не останавливается для загрузки

1 Ответ

0 голосов
/ 28 февраля 2020

Если при регистрации это регистрируется undefined:

console.log(req.body.surname);

Это означает, что вы не получаете данные POST, как ожидалось.

Убедитесь, что вы используете express.urlencoded() промежуточное ПО:

const express = require("express");
const app = express();
const port = 3000;

app.use(express.urlencoded({ extended: true })); // <--------

/* ... */
...