【发布时间】:2018-11-29 17:22:27
【问题描述】:
我正在为 heroku 部署一个简单网络应用程序的数据库和后端。但是,当我使用 knex.js 尝试向数据库添加数据时,它不起作用...(当我使用 postman 测试服务器时,错误消息显示“无法注册”)。
我与后端(express.js)的连接如下
const postgres = knex({
client: 'pg',
connection: {
connectionString : process.env.DATABASE_URL,
ssl: true,
}
});
将用户“注册”到数据库的代码(我也插入到登录表中,因为它必须是一个事务)
app.post("/register",(req,res)=>{
const {email,name,password} = req.body;
if(!email || !name || !password){
return res.status(400).json('Incorrect form submission')
}
const hash = bcrypt.hashSync(password);
postgres.transaction((trx) => {
trx.insert({
hash: hash,
email: email
})
.into('login')
.returning('email')
.then(logInEmail => {
return trx('users')
.returning('*')
.insert({
email: logInEmail[0],
name: name,
joined: new Date()
}).then(user => {
console.log(user[0])
res.json(user[0]);
})
})
.then(trx.commit)
.catch(trx.rollback);
})
.catch(err => res.status(400).json('unable to register'))
})
Database Image 我连接数据库的验证图像
当我将服务器连接到我计算机的数据库(Postgresql)时,我仍然可以正常注册用户,但是当我使用 Heroku 数据库时,这不起作用。
很抱歉,这是一个很长的帖子,我非常感谢任何帮助。我正在使用 Ubuntu 18.04。
错误信息是:
{
"message": "insert into \"login\" (\"email\", \"hash\") values ($1,
$2) returning \"email\" - column \"email\" of relation \"login\"
does not exist"
}
【问题讨论】:
-
尝试将
err => res.status(400).json('unable to register')行更改为err => res.status(400).json({ message: err.message })以获取有关导致返回 400 的错误的信息。 -
谢谢。我更新了错误信息
标签: node.js express heroku knex.js heroku-postgres