Ich habe ein Schema wie folgt aus:Updating Wert mit Kardinalität viele
[{:db/id #db/id[:db.part/db]
:db/ident :person/name
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/doc "A person's name"
:db.install/_attribute :db.part/db}
{:db/id #db/id[:db.part/db]
:db/ident :person/roles
:db/valueType :db.type/keyword
:db/cardinality :db.cardinality/many
:db/doc "A person's role"
:db.install/_attribute :db.part/db}]
und einen Code wie folgt aus:
;; insert new person
(def new-id (-> (d/transact conn [{:db/id (d/tempid :db.part/user)
:person/name "foo"
:person/roles #{:admin}}])
(:tempids)
(vals)
(first)))
(defn get-roles
[db eid]
(d/q '[:find ?roles .
:in $ ?eid
:where [?eid :user/roles ?roles]]))
(get-roles (d/db conn) new-id) ;; => [:admin]
;; update a person
(d/transact conn [{:db/id new-id
:person/roles #{:client}}])
(get-roles (d/db conn) new-id) ;; => [:admin :client]
Es scheint das Standardverhalten auf es ist, es wird Assoc gerade die neue Wert.
Wie kann ich dieses Ergebnis zu erhalten, nachdem die Aktualisierung Transaktion tun:
(get-roles (d/db conn) new-id) ;; => [:client]
Wer von einem Link auf die Dokumentation wissen, wo dieses Verhalten erklärt? –