Получение TypeError: Невозможно прочитать свойство 'all_products' из неопределенного в PostgreSQL, Express, React, Node app - PullRequest
0 голосов
/ 30 марта 2020

У меня проблемы с моим приложением PERN. Все работает большую часть времени, но когда я вносю изменения в файл и сохраняю, я получаю эту ошибку, если я не обновлю sh веб-страницу или не перезапущу свой сервер. После выполнения этих действий приложение работает как обычно, но я все еще чувствую, что не должен получать эту ошибку. Спасибо за любую помощь!

Вот ошибка:

TypeError: Cannot read property 'all_products' of undefined
at getProducts (/Users/sesouk/Documents/new-projects/product-manager/server/controller.js:6:8)
at Layer.handle [as handle_request] (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/layer.js:95:5)
at /Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/index.js:335:12)
at next (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/index.js:275:10)
at jsonParser (/Users/sesouk/Documents/new-projects/product-manager/node_modules/body-parser/lib/types/json.js:110:7)
at Layer.handle [as handle_request] (/Users/sesouk/Documents/new-projects/product-manager/node_modules/express/lib/router/layer.js:95:5)

Вот часть файла контроллера, выдающая ошибку:

  module.exports = {
  getProducts: (req, res, next) => {
    const db = req.app.get('db')

    db
      .all_products()
      .then(products => res.status(200).send(products))
      .catch(error => console.log(error))
  },

Вот мой файл сервера:

require('dotenv').config()
const express = require('express')
const massive = require('massive')
const ctrl = require('./controller')

const app = express()
app.use(express.json())

const { SERVER_PORT, CONNECTION_STRING } = process.env

massive({
  connectionString: CONNECTION_STRING,
  ssl: {rejectUnauthorized: false}
}).then(db => {
  app.set('db', db)
}).catch(err => console.log('ERROR', err))

app.listen(SERVER_PORT, () => {
  console.log(`Server port is over ${SERVER_PORT}!`)
})

app.get('/api/inventory', ctrl.getProducts)
app.post('/api/product', ctrl.createProduct)
app.delete("/api/inventory/:id", ctrl.deleteProduct)
app.put('/api/product/:id', ctrl.editProduct)
...