Проблема в том, что либо у меня типо, либо есть ошибка, которую я не могу определить прямо сейчас. Все должно работать нормально (потому что я скопировал эту часть кода в свой код), но это выглядит так:
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-таблица с указанием имени и адреса электронной почты в маршруте / регистрации