kuchuluk
@kuchuluk

Из-за чего у меня в коде ошибка (node:54008) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'query' of undefined?

Здравствуйте!
Пытаюсь выбрать людей из БД postgresql таким образом:
const Router = require('express')
const router = new Router()
const mainController = require('../controllers/MainController')

module.exports = function (app) {
    app.get('/', (req, res) => {
        let as = mainController.getAll;
        // console.log(as)
        res.end(as);
    });
}


Код контроллера такой:
const {Worker} = require('../models/models')

class MainController {
    async create(req, res, next) {
        let {fio, department, position, phonenumber} = req.body

        const worker = await Worker.create({fio, department, position, phonenumber})

        return res.json(worker)

    }

    async getAll(req, res) {
        let {fio, department, position, phonenumber} = req.query
        let workers;
        workers = await Worker.findAll()

        return res.json(workers)
        // const workers = await Worker.findAll()
        // return res.json(workers)
    }

}

module.exports = new MainController()


Но вылетает ошибка (node:54008) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'query' of undefined
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 2
Geminix
@Geminix
Фуллстек nuxt, .net разработчик
res.end(as) -> res.send(as)
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
Так как с реакот сам знаком только 2 недели отвечу на простой вопрос.
Функции могут возврашать обешание сделать что-то в будущем. Promise.
У промиса два исхода. успех или ошибка.
в полном синтаксисе пишется через some_function_return_promise().then(). catch()

получается запутанная лапша. Внутри async и только в таких функция (не на главном потоке) можно использовать
await. Это сахар, который возмет успешный результат от асинхронной функции (промиса) и будет ждать пока она не завершит работу.
ошибку в этом случае можно ловить через try {. код где есть await } catch () { }

Так как Вы не обернули в подобный код, то в случае ошибки и получаете
UnhandledPromiseRejectionWarning

в вашем примере использовано 2 авайта и вижу две функции с модификатором async
это еще один сахар, который делает неявно из функции промис

В ошибке еще написано
Cannot read property 'query' of undefined

смотрим где же query ? как поле у req значит выше, а где вызывали getAll что передали и т.д.
пока не найдете где забыли правильно проинициализировать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы