问题描述
(pprint (d/q '[:find ?tx ?attr ?val ?op :in $ ?e :where [?e ?attr ?val ?tx ?op]] (d/history (d/db db/conn)) 17592186766274))
产生:
#{[13194140264981 354 6 true]
[13194140265425 352 "OK" true]
[13194140255168 348 17592186593957 true]
[13194140265425 353 true true]
[13194140255168 311 #uuid "6086bec6-7a11-4238-9ce3-67e6427d7b07" true]
[13194140255168 346 17592186491729 true]
[13194140265424 351 #uuid "60871d86-cdc2-4ddf-b091-98117c3948af" true]
[13194140265425 349 #inst "2021-04-26T20:29:34.566-00:00" true]
[13194140255168 347 "{:driver \"6144c7bd-8e71-49c3-8eef-2e9d157f3e11\",:order \"c89d32d2-92da-4cde-827d-da6406877c28\"}\n" true]
[13194140265424 350 #inst "2021-04-26T20:29:34.472-00:00" true]
[13194140255168 356 #inst "2021-04-26T18:23:18.140-00:00" true]}
请注意,属性 354 在历史记录中显示仅更改一次(更改为值 6)。 那么,如果我们要求这个特定的属性...
(pprint (d/q '[:find ?tx ?val ?op :in $ ?e :where [?e 354 ?val ?tx ?op]] (d/history (d/db db/conn)) 17592186766274))
...突然发现修改了好多次:
#{[13194140264479 1 false]
[13194140264516 2 false]
[13194140264585 4 true]
[13194140264981 6 true]
[13194140264721 4 false]
[13194140264461 1 true]
[13194140264479 2 true]
[13194140264721 5 true]
[13194140264516 3 true]
[13194140264585 3 false]
[13194140264981 5 false]}
此外,如果我们再次询问当前数据库而不是历史记录,我们会得到相同的结果!
(pprint (d/q '[:find ?tx ?attr ?val ?op :in $ ?e :where [?e ?attr ?val ?tx ?op]] (d/db db/conn) 17592186766274))
给出:
#{[13194140264981 354 6 true]
[13194140265425 352 "OK" true]
[13194140255168 348 17592186593957 true]
[13194140265425 353 true true]
[13194140255168 311 #uuid "6086bec6-7a11-4238-9ce3-67e6427d7b07" true]
[13194140255168 346 17592186491729 true]
[13194140265424 351 #uuid "60871d86-cdc2-4ddf-b091-98117c3948af" true]
[13194140265425 349 #inst "2021-04-26T20:29:34.566-00:00" true]
[13194140255168 347 "{:driver \"6144c7bd-8e71-49c3-8eef-2e9d157f3e11\",:order \"c89d32d2-92da-4cde-827d-da6406877c28\"}\n" true]
[13194140265424 350 #inst "2021-04-26T20:29:34.472-00:00" true]
[13194140255168 356 #inst "2021-04-26T18:23:18.140-00:00" true]}
对于一个实体的所有属性更改的问题似乎过于笼统,但没有返回错误并提供错误的答案。为什么?
解决方法
好的,我知道发生了什么。该实体的所有属性都将 :db/noHistory 设置为 true。当我们查询特定属性时,为什么仍然显示更改仍然很神秘。