Учитывая запрос, как это:Datomic журнал аудит и перечисления
(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
, найдите объект, на который он указывает. Но я не уверен, что это правильный подход или даже как это сделать.
Вы также можете запросить атрибут непосредственно через предложение '[? A: db/valueType? Vtid] [? Vtid: db/ident? Vt]' –
Атрибуты хранятся и могут запрашиваться как все остальные объекты - они aren Это действительно мета-данные. –