【问题标题】:Can't do Postgresql manipulation in Heroku Database无法在 Heroku 数据库中进行 Postgresql 操作
【发布时间】: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


【解决方案1】:

您的表 login 中没有列名 email。也许你还没有初始化你的数据库模式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 2013-04-19
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2012-03-22
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多