给定一个类似如下的查询:
(def query '[:find ?tx ?date ?v ?op
:in $ ?e ?a
:where
[?e ?a ?v ?tx ?op]
[?tx :db/txInstant ?date]])在用户提供实体和属性的情况下,我可以在每个字段上创建一个审计日志。这样做效果很好。
我的问题是枚举字段。返回的?v是一个:db/id,而不是枚举值本身,我真的不确定如何判断用户提供的字段是枚举字段,我是否应该将返回的Long值视为对枚举的引用。
我认为我需要做的是让查询返回相关属性的:db/valueType,然后如果它是ref类型,则查找它所指向的实体。但我不确定这是不是正确的方法,甚至不知道如何做到这一点。
发布于 2016-06-11 03:19:45
我把它弄好了。我注意到在数据中有一个(d/attribute db atto-key)函数,它将返回关于属性的元数据字段。因此,我可以使用它来检查:db/valueType是否等于:db/ref,然后调用(d/ident db entity-id)来将实体id解析为其枚举值。
https://stackoverflow.com/questions/37754014
复制相似问题