【发布时间】:2018-04-26 14:07:46
【问题描述】:
我遇到了一个问题,即 knex 事务需要一个 then。在下面的代码中,一旦发生回滚而不是捕获该错误,邮递员就会挂起等待响应。看起来它期待一个then。这是为什么?这意味着即使有回滚,事务也认为它是成功的?
app.post('/register', (req, res) => {
const { email, name, password } = req.body;
const hash = bcrypt.hashSync(password, saltRounds);
console.log(hash);
//insert syntax
//When sending back response on an error from a server never send information back as error, instead send just a message
dbConnection.transaction((trx) => {
trx.insert({
name: name,
emailaddress: email,
createddt: new Date()
}).into('users')
.returning('emailaddress')
.then((response) => {
console.log(response);
dbConnection('login').insert({
emailaddress: response,
password: hash
})
.then(res.json('user created'));
})
.then(() => {
trx.commit;
console.log('committed');
})
.catch(() => {
trx.rollback;
//console.log(err);
console.log('rollback');
//res.json('cannot create user');
})
//.catch((err) => res.status(400).json(err))
})
//.then(res.json('user created'))
.catch((err) => res.status(400).json('cannot create user'))
})
知道如何解决这个问题吗?
【问题讨论】:
标签: postgresql knex.js