Datomic enum是地图中的关键

时间:2014-04-24 08:19:48

标签: clojure enums datomic

我有一个包含以下枚举的数据库数据库

{:db/id #db/id[:db.part/db]
  :db/ident :demographics/gender
  :db/valueType :db.type/ref
  :db/cardinality :db.cardinality/one
  :db/doc "A person's gender enum reference"
  :db.install/_attribute :db.part/db}

;; :demographics/gender enum values
{:db/id #db/id[:db.part/user]
  :db/ident :demographics.gender/male}

{:db/id #db/id[:db.part/user]
  :db/ident :demographics.gender/female}

{:db/id #db/id[:db.part/user]
  :db/ident :demographics.gender/other}

现在说我做:

(d/entity db ...)

获取包含实体及其属性的惰性映射,包含上面的枚举。我现在想要获取我从查询中获得的枚举值的字符串表示形式。我的想法是这样做:

(def ^:private gender-map {:demographics.gender/male "Male" 
                           :demographics.gender/female "Female" 
                           :demographics.gender/other "Other"})

然后这个

(gender-map (lazy-map :demographics/gender))

然而,这不起作用。这样做的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

您的示例中未定义

lazy-map。如果是从(d/entity ...)返回的结果,请检查它是否具有有效的:demographics/gender条目。