2017-03-29 14 views
0

ワイルドカードプルを使用しない理由はありますか?ワイルドカードを使用しない理由はありますか?

(defn pull-wild 
    "Pulls all attributes of a single entity." 
    [db ent-id] 
    (d/pull db '[*] ent-id)) 

明示的に属性を記述するよりはるかに便利です。

+0

IMIO(http://docs.datomic.com/pull .html)、あなたは[コンポーネントの属性](http://blog.datomic.com/2013/06/component-entities.html)を完全に入手できます。これはたくさんの仕事になる可能性があります。あなたが望むものがすべて顧客のものであれば、大きなオーダーのための無用な注文ラインがすべてあります。 – Thumbnail

答えて

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} })) 
関連する問題