UUID 字段上的原子查询未返回预期结果

问题描述 投票:0回答:1

我正在将一个实体持久保存到 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)
;; => #{}
clojure datomic
1个回答
0
投票

这正是 Datomic 查询中“输入”的用途。

以下是相关文档的链接:

hth

© www.soinside.com 2019 - 2024. All rights reserved.