/ / Защо вмъква резултатите от заявките в базата данни след връщане на транзакциите? pg-обещание - node.js, pg-обещание

Защо вмъква резултатите от заявките в базата данни след връщане на транзакциите? pg-обещание - node.js, pg-обещание

Наскоро приложих pg-обещание в един от моите проекти и се опитвам да разбера как функционират транзакциите. Аз тествам със следната функция:

testFunction: (req, res, next) => {
db.tx(async t =>{
await db.any("insert into services (servicename, price, itemcode, servicedescription, active, subscriptionid) values ($1, $2, $3, $4, $5, $6) returning *;", ["babysitting", 25, "12321", "taking care of children", true, 1])
await db.any("insert into orangutans (name, age, sex) values ($1, $2, $3)", ["beau", 22, "male"])
})
.then(data=>{
res.json(data)
})
.catch(error=>{
res.json(error)
})
}

Аз моделирах този код след следния пример в документа pg-обещание:

db.tx(async t => {
await t.none("UPDATE users SET active = $1 WHERE id = $2", [true, 123]);
await t.one("INSERT INTO audit(entity, id) VALUES($1, $2) RETURNING id", ["users", 123]);
})
.then(data => {
// success, COMMIT was executed
})
.catch(error => {
// failure, ROLLBACK was executed
});

Първата заявка работи успешно и вмъква aзапис в базата данни. Втората заявка се провали, защото връзката "орангутани" не съществува. Очаквах записът, вмъкнат от първата заявка, да бъде премахнат от базата данни като част от процеса на връщане на транзакциите. Когато проверявам базата данни след изпълнението на този код, записът остава в базата данни. Може ли някой да ме насочи в правилната посока, за да разбере защо записът не е премахнат?

Отговори:

0 за отговор № 1

Видях отговора ми, веднага щом отворих въпроса, за да го прегледам. Аз наричах .any "db", а не "t". Работеше веднага, щом направих тази промяна.