ReferenceError: критика не определена в приложении Node / Express - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь работать над частью обзора на веб-сайте обзора / оценки. У нас есть схема мангуста, к которой я добавляю новые отзывы.

Это схема:

var WorkSchema = new mongoose.Schema({
    title: String,
    genre: String,
    workType: String,
    length: Number,
    ageRange: String,
    author: {
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "User"
        },
        username: String
    },
    manuscriptText: String,
    critiques: [
        {
            reviewerName: String,
            critique: String,
            date: {
                type: Date,
                default: Date.now
            }
        }
    ],
    ratingNumber: [Number],
    ratingSum: {
        type: Number,
        default: 0
    },
    date: {
        type: Date,
        default: Date.now
    }
});

Когда пользователь отправляет новый отзыв, это - маршрут поста. Это выдвигает критику к массиву критических замечаний, связанных с работой (подтверждено поиском в mongodb), но я продолжаю получать ошибку ссылки, что "критика" не определена в рендере. Мне нужно повторно обработать рабочую страницу, чтобы рецензент мог видеть, что их критика была добавлена ​​и отображена на переднем крае. Не уверен, почему это происходит, потому что «критика» есть практически везде.

router.post('/:id', function(req, res) {

    Work.findByIdAndUpdate(req.params.id, 
        {
            $push: 
                {
                    critiques: {
                        reviewerName: req.user.username,
                        critique: req.body.critique
                    }
                }
        }, { new: true}).populate('works', 'critiques').exec(function(err, foundWork) {
                if (err) {
                    console.log(err);
                }  else {
                    res.render('work', 
                        {
                            user: foundWork, 
                            title: foundWork.title, 
                            critiques: critiques,
                            currentUser: req.user,
                            work: foundWork
                        }
                    );
            }
        });
});

1 Ответ

0 голосов
/ 28 апреля 2018

во время рендеринга всех значений после обновления.

вы делаете critiques: critiques,

, а critiques не определено как переменная.

теперь у вас есть 2 варианта, во-первых, вы можете просто показать полный массив critiques. как это происходит из базы данных. [может быть, вы можете сделать некоторые операции с этими данными, если это необходимо.] как critiques: foundWork.critiques. или иначе вы можете просто показать данные, которые вы вставляете в то время, как critiques : req.body.critiques

как показано ниже:

Взять из БД как есть

res.render("work", {
      user: foundWork,
      title: foundWork.title,
      critiques: foundWork.critiques,
      currentUser: req.user,
      work: foundWork
    });

извлечение из тела толкающего текущего элемента

res.render("work", {
      user: foundWork,
      title: foundWork.title,
      critiques: req.body.critiques,
      currentUser: req.user,
      work: foundWork
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...