每笔交易的数据交易功能

时间:2016-11-03 02:30:43

标签: clojure datomic

有没有办法在每个事务在datomic中提交之前将事务函数附加到每个事务中?例如,无论事务的来源如何,我们都希望使记录无效。

2 个答案:

答案 0 :(得分:1)

是的,您可以在提交事务之前“追加”或者更确切地说调用事务函数。事务处理器将在其db:fn属性中查找该函数,然后调用它,传递db的值(当前截至事务开始时)。因此,您需要在每次交易之前拨打电话。

请注意,交易功能没有api或流量来自动调用每个交易呼叫的交易功能。对于每次交易的调用,您都需要调用验证交易函数。

http://docs.datomic.com/database-functions.html

答案 1 :(得分:0)

如果要验证传入的事务数据,可以在对等端进行一些欺骗以验证它。例如,您可以使用db,使用with获取应用传入事务的“假”数据库,然后根据该数据库进行验证。例如,您可以使用来自with的此“假”数据库上的常规Datomic API轻松获取基于此事务触摸的实体,并查看传入事务是否触及实体不允许触摸

如果您想在交易方面验证某些内容,您唯一的选择是手动调用数据库函数。