Что вызывает эту ошибку «Cast to ObjectId» в приложении Express. js? - PullRequest
0 голосов
/ 31 января 2020

Я работаю над приложением для ведения блога с Express, E JS и MongoDB.

В моем posts.js контроллере у меня есть:

exports.addPostForm = (req, res, next) => {
    res.render('addpost', {
        website_name: 'MEAN Blog',
        page_heading: 'Add New Post'
    });
};

Форма в представлении addpost:

<form method="post" action="postadded" name="sentMessage" class="w-100" novalidate>
    <div class="control-group">
        <div class="form-group floating-label-form-group controls">
            <label>Post title</label>
            <input type="text" class="form-control" placeholder="Post title" name="title" id="title" required>
            <p class="help-block text-danger"></p>
        </div>
    </div>
    <div class="control-group">
        <div class="form-group floating-label-form-group controls">
            <label>Post summary</label>
            <input type="email" class="form-control" placeholder="Post summary" name="summary" id="summary" required>
            <p class="help-block text-danger"></p>
        </div>
    </div>

    <div class="control-group">
        <div class="form-group floating-label-form-group controls">
            <label>Post content</label>
            <textarea rows="5" class="form-control" placeholder="Post content" name="full_text" id="fullText" required></textarea>
            <p class="help-block text-danger"></p>
        </div>
    </div>
    <div class="form-group mt-4">
        <button type="submit" class="btn btn-primary" id="addPostButton">Add Post</button>
    </div>
</form>

Это маршруты, которые у меня есть:

router.get('/addpost', postsController.addPostForm);

Наконец, модель:

const mongoose = require('mongoose');

const postSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    short_description: {
        type: String,
        required: true
    },
    full_text: {
        type: String,
        required: true
    }
});

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

Я думал, что ничего не пропало, но я получаю эту ошибку в консоли:

'Cast to ObjectId failed for value "addpost" at path "_id" for model "Post"'

Чего не хватает?

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Ошибка, вызванная тем, что есть функция с: id param и обрабатывается контроллером, который получает подобный объект

router.get('/:id', postsController.controllerFunction);

и черта / addpost в качестве параметра, а не путь, пытается изменить порядок маршруты

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

, если вы добавляете новый метод записи, в вашем маршруте должна быть запись вместо get.

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

кажется, что где-то в вашем коде вы пытаетесь получить какой-то документ из db с моделью mon goose, но передаете неверный аргумент. вместо действительного значения mon go ObjectId передается значение "addpost"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...