несмотря на то, что регистрации являются допустимой переменной, которая определена как новый экземпляр модели регистрации, массив регистраций не определен - PullRequest
0 голосов
/ 23 апреля 2019

Проблема в том, что либо у меня типо, либо есть ошибка, которую я не могу определить прямо сейчас. Все должно работать нормально (потому что я скопировал эту часть кода в свой код), но это выглядит так:

TypeError: C:\Users\USER\Realtime-Chat\playground-login\views\index.pug:3
    1| extends layout
    2| block content
  > 3|   if registrations.length
    4|     table
    5|       tr
    6|         th Name
Cannot read property 'length' of undefined
[...]
at router.get (C:\Users\USER\Realtime-Chat\playground-login\routes\index.js:33:7)
[...]

Вышеуказанная строка кода точно: 32> Registration.find()

Я не смог найти никакого решения, соответствующего моему случаю ... Сначала я искал возможные сценарии для typeo (потому что регистрация - это сложное слово для ввода). Тогда ничего не нашел. Позже я регистрировал каждый шаг к консоли, чтобы узнать, что происходит шаг за шагом. Ничего необычного, кроме трех строк в файле index.js (NR1 и NR2 регистрируют req.body, в то время как NR3 регистрирует req.body и коллекцию Registration (req.body с objectid), и я не могу выяснить, почему). Затем я снова и снова проверил index.pug, Registration.js & index.js, но он по-прежнему возвращает неопределенное значение. Тогда я подумал, что это может быть устаревшим, но я не знаю, что является устаревшим. Последнее, что я сделал, это проверил, была ли у кого-то из вас такая же или похожая проблема, но совпадений не найдено ...

// Файл Registration.js в моделях dir:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const registrationSchema = new Schema({
//[...]
});
module.exports = mongoose.model('Registration', registrationSchema);

// файл index.js в маршрутах dir:

//[...]
const Registration = require('../models/Registration');
//[...]
router.post('/', [{...}], (req, res) => {
//NR1
  const errors = validationResult(req);
  if(errors.isEmpty()) {
//NR2
    const registration = new Registration(req.body);
    registration.save()
      .then(() => {res.send('Thanks for your registration!')})
      .catch(() => {res.send('Sorry! Something went wrong.')})
  } else {
    res.render('form', {
      title: 'Registration form',
      errors: errors.array(),
      data: req.body
  });
//NR3
  };
});
router.get('/registrations', (req, res) => {
  Registration.find()
    .then((registrations) => {
        res.render('index', {title: 'Listing registrations', registrations})})
    .catch(() => {res.send('Sorry! Something went wrong.')});
})
//[...]

// файл index.pug в dir views:

extends layout
block content
  if registrations
    table
      tr
        th Name
        th Email
      each registration in registrations
        tr
          td= registrations.name
          td= registrations.email
  else
    p No registrations yet :(

Возвращается html-таблица с указанием имени и адреса электронной почты в маршруте / регистрации

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