2016-04-10 1 views
1

J'ai besoin de toutes les valeurs d'un attribut particulier dans une entité (pour le schéma de datomic). La fonction retract nécessite que la valeur de l'attribut soit passée en argument, mais ils sont beaucoup trop nombreux, et je demande simplement qu'ils soient remplacés par un nouvel ensemble de valeurs. Est-il possible de réaliser via clojure?Datomic - comment extraire toutes les valeurs d'un attribut

Répondre

2

Vous pouvez soit interroger toutes les valeurs et générer la rétraction souhaitée dans votre homologue ou, si vous souhaitez vous assurer d'une "attrib vide" avant d'écrire de nouvelles valeurs, faites de même dans une fonction de transaction.

(map (fn [v] [:db/retract eid attrib v]) 
    (d/q '[:find [?v ...] 
      :in $ ?e ?a 
      :where [?e ?a ?v] 
      db 
      eid 
      attrib)) 
+0

Merci Leon, je vais essayer. Aussi pourriez-vous également fournir l'extrait de code ci-dessus dans une fonction de transaction (comme vous l'avez mentionné) – javdev

+0

@Abhinav Il suffit d'écrire une fonction de transaction et d'utiliser l'extrait de l'intérieur - Il s'agit principalement d'un http://docs.datomic.com/ database-functions.html –