问题描述
构建第一个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))