Как использовать две коллекции MongoDB в моем Express роутере? - PullRequest
0 голосов
/ 12 января 2020

router.get('/home', ensureAuthenticated, (req, res) => res.render('home', {user_mv: req.user, post_mv: req.post1}));

//Create topic page
router.get('/create-topic', ensureAuthenticated, (req, res) => res.render('create-topic', {user_mv: req.user}));


//Post handle
router.post('/create-topic', (req, res) => {
    const {user_id, title, category, vista, description} = req.body;
    let error2= [];
    if(!title || !category || !vista || !description) {
        error2.push({msg: 'Please check all fields.'});
    };

    if(error2.length > 0){
        res.render('create-topic', {  
            error2,
            title,
            category,
            vista,
            description
        });
    }else {
        //Validation passed
        Post.findOne({title: title})
        .then(post1 => {
            if(post1){
                //User exists
                error2.push({msg: 'Title is already used.'});
                res.render('create-topic', {
                    error2,
                    title,
                    category,
                    vista,
                    description
                });
            } else {
                const newPost = new Post({
                    user_id,
                    title,
                    category,
                    vista,
                    description
                });
                newPost.save()
                    .then(post1 => {
                        res.redirect('/home');
                    })
                    .catch(err => console.log(err));
                };
            });
    };        
});



module.exports = router;
<div class="posts__content">
    <a href="#">
       <h3><%= post_mv.title %></h3>
    </a>
</div>
При входе на мой сайт пользователь может создать сообщение, которое вставляется в MongoDB с включенным идентификатором пользователя. Я пытаюсь отобразить заголовок 1 сообщения, которое у меня есть в моей коллекции, но я получаю сообщение об ошибке «не могу прочитать» заголовок «свойство undefined». Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 13 января 2020

Похоже, вы не передаете сообщение на ваш e js. Таким образом, объект post_mv отсутствует, поэтому он не определен и не имеет свойств.

res.redirect('/home',{post_mv:post1});

Возможно, я ошибаюсь, но post1should быть новым объектом post с нужным заголовком в качестве свойства, возвращаемого после сохранения.

...