我需要进行交易:
首先,我创建一个新的bookUnitQuestionOption,创建后,我需要使用已保存的ID更新其他表(bookUnitQuestion)。
我尝试类似的事情:
async store ({ request }){
const bookUnitQuestionOption = {...request.all(), user_id: request.user_id};
const trx = await Database.beginTransaction()
const responseInsercaoOption = BookUnitQuestionOption.create(bookUnitQuestionOption, trx)
if(bookUnitQuestionOption.correct === true)
await this.atualizaOptionCorreta(bookUnitQuestionOption.book_unit_question_id, responseInsercaoOption.id, trx)
trx.commit()
}
async atualizaOptionCorreta(bookUnitQuestionId, idOpcaoPergunta, transaction){
await BookUnitQuestion.query()
.where('id', bookUnitQuestionId)
.update({correct_answer_description_id :idOpcaoPergunta}, transaction);
}
但是我遇到500错误:
消息:“交易查询已完成,使用DEBUG = knex:tx运行 以获得更多信息”
答案 0 :(得分:0)
在第一个查询之前您没有等待,第二个查询被跳过,因为在这种情况下,如果if和trx.commit()在执行第一个查询之前就运行了。
const responseInsercaoOption = BookUnitQuestionOption.create(bookUnitQuestionOption, trx)
应为:
const responseInsercaoOption = await BookUnitQuestionOption.create(bookUnitQuestionOption, trx)