我在API中使用Typeorm。问题是<!--HTML data looks like this:-->
<table id="PLTable">
<thead>
<tr>
<th>cost estimate</th>
<th>cost actual</th>
</tr>
</thead>
<tr>
<td class = "cost_estimate">100</td>
<td class = "act_cost"></td>
</tr>
<tr>
<td class = "cost_estimate">100</td>
<td class = "act_cost">50</td>
</tr>
</table>
<div id="cost_projected_total">
</div>
在提交事务之前触发了用户挂钩。那是因为它不依赖ORM本身的DB。它禁止我访问该挂钩中发生的所有事情中的数据记录,因为该事务仍在进行中。您能给我一些有关如何解决此问题的建议吗?
答案 0 :(得分:0)
一种方法是使用外部事件代理。
您在订户代码中推送到经纪人,例如Redis队列,Rabbitmq,aws SQS或kinesis,kafka ...
您在另一个代码中侦听队列,这时您的第一笔交易应已提交。您将处理一个单独的事务,并可以实现可以依赖于第一个事务的提交数据的订户代码。
如果第一次事务的提交时间很长,那么使用typeorm订阅服务器将无法使用,因为即使使用事件代理,您也无法保证事务已提交。因此,您只需在事务完成后添加代码以推送到代理中,或依靠可以推送事件代理的sql触发器,或基于typeorm的version列实现重试系统,以确保更新已提交,最适合免费重试的事件代理,例如kafka或SQS。