【发布时间】:2014-04-24 08:19:47
【问题描述】:
我有一个包含以下枚举的 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))
然而,这并没有奏效。这样做的正确方法是什么?
谢谢
【问题讨论】:
-
原来我在尝试获取地图中的值时顺序错误。我只需要切换键的位置和
(d/entity db ...)结果,我就得到了一个字符串形式的枚举值(例如“male”)。因此,gender-map是不必要的。 -
您应该考虑删除您的问题或接受我的回答。顺便说一句:从您的评论中不清楚关键字到字符串的转换发生在哪里或什么顺序是错误的。