有没有理由不使用通配符拉?
(defn pull-wild
"Pulls all attributes of a single entity."
[db ent-id]
(d/pull db '[*] ent-id))
比明确说明属性要方便得多。
答案 0 :(得分:1)
这取决于您需要在应用程序中使用哪些属性,以及它是否需要大量数据,或者您是否要提取大量实体。
如果您使用客户端库,您可能希望最小化需要通过网络发送的数据。
我想还有很多其他的想法。
但只要它足够快我就会拉出通配符。
fricke
答案 1 :(得分:0)
您可能还对entity-map
函数from Tupelo Datomic感兴趣。给定EID(或查找引用),它将返回完整记录作为常规Clojure映射:
(let [
; Retrieve James' attr-val pairs as a map. An entity can be referenced either by EID or by a
; LookupRef, which is a unique attribute-value pair expressed as a vector.
james-map (td/entity-map (live-db) james-eid) ; lookup by EID
james-map2 (td/entity-map (live-db) [:person/name "James Bond"] ) ; lookup by LookupRef
]
(is (= james-map james-map2
{:person/name "James Bond" :location "London" :weapon/type #{:weapon/wit :weapon/gun} } ))