为什么我的PosgreSQL数据库无法连接到我的Node.js后端

问题描述

构建第一个Node / Express应用程序,我无法从postgres中提取数据。

这是server.js中的连接

var db = require('knex')({
      client: 'pg',connection: {
        host : '127.0.0.1',user : '',password : '',database : 'mydb'
      }
    });

表格已设置

mydb=# \dt
           List of relations
 Schema |   Name    | Type  |   Owner   
--------+-----------+-------+-----------
 public | paintings | table | me
(1 row)

这是路线

app.get('/crud',(req,res) => main.getTableData(req,res,db))

这是main.js中的控制器

const getTableData = (req,db) => {
  db.select('*').from('mydb')
    .then(items => {
      if(items.length){
        res.json(items)
      } else {
        res.json({dataExists: 'false'})
      }
    })
    .catch(err => res.status(400).json({dbError: `db error`}))
}

我每次都遇到“数据库错误”。此处缺少什么和/或如何调试?

编辑:错误表明'mydb'不存在。

解决方法

通过执行.catch(err => console.log(err))

注销错误

我的猜测是表名错误,from('mydb')应该是from('paintings'),因为那是您的表名。

另一方面。你可以做

const getTableData = (db) => {
  return (req,res) => {
    db.select('*').from('paintings')
      .then(items => {
        if(items.length){
          res.json(items)
        } else {
          res.json({dataExists: 'false'})
        }
      })
      .catch(err => res.status(400).json({ dbError: `db error` }))
  }
}

让您的路线像

app.get('/crud',main.getTableData(db))