我正在将一个实体持久保存到 Datomic,并且可以按预期将其拉回。该实体有一个唯一的 UUID 字段
:student/id
,如果我尝试查询该字段值的匹配项,则不会返回结果。我做错了什么?
(require '[datomic.api :as d])
(def uri "datomic:mem://db")
(d/create-database uri)
(def conn (d/connect uri))
(def db (d/db conn))
(def schema
[;; students
{:db/ident :student/uuid1
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :student/last
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :student/id
:db/valueType :db.type/uuid
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity}
])
(d/transact conn schema)
;; students
(def brandon {:student/id (d/squuid)
:student/uuid1 "Brandon"
:student/last "Smith"})
(def brandon-tx (d/transact conn [brandon]))
(def new-db (:db-after @brandon-tx))
@(def uuid1 (:student/id brandon))
;; ==>#uuid "64ce962a-e750-4d5e-a7eb-c860156ee8d0"
@(def uuid2 (-> (d/q '[:find (pull ?e [*])
:where [?e :student/id]] new-db) ffirst :student/id))
;; ==>#uuid "64ce962a-e750-4d5e-a7eb-c860156ee8d0"
(= uuid2 uuid1)
;; => true
;; I'm expecting to get Brandon back here, but I get an empty set
(d/q '[:find ?e
:where [?e :student/id uuid1]] new-db)
;; => #{}