【问题标题】:Why won't my PosgreSQL database connect in my Node.js backend为什么我的 PostgreSQL 数据库无法连接到我的 Node.js 后端
【发布时间】:2020-09-10 09:21:11
【问题描述】:

构建我的第一个 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, res, 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)) 看看发生了什么。

标签: node.js postgresql express knex.js


【解决方案1】:

通过.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))

【讨论】:

  • 知道了。谢谢。
  • 添加了一点旁注,如果答案对您的问题有所帮助,如果您能将其标记为已接受的答案,我将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2021-02-09
  • 2015-06-20
相关资源
最近更新 更多