datascript

Immutable database and Datalog query engine for Clojure, ClojureScript and JS
v 2020-04-10T08:06:45.006700Z

Hi, I am working on an app where I am using data script to manage app state. I have a problem who h I don’t know how to solve. I have an entity whose attributes has a cardinal it’s of many and it’s a reference to some other entity, I am trying to add/ remove some of the entity Id but I am not getting what I wanted. Anyone has answer to this. Thank you :)

Aron 2020-04-10T08:21:09.006900Z

can you share schema

Aron 2020-04-10T08:21:13.007100Z

or example

v 2020-04-10T15:00:08.007300Z

Sure

v 2020-04-10T15:03:45.009800Z

(def schema {:user/favourites {:db/cardinality :db.cardinality/many :db/type :db.type/ref}})

// When adding - WORKS
(d/transact! conn [[:db/add uid :user/favourites fav-id]])

// When retracting - DOESNT WORK
(d/transact! conn [[:db/retract uid :user/favourites fav-id]])

v 2020-04-10T15:04:26.010100Z

@ashnur

lilactown 2020-04-10T15:15:14.010300Z

that works for me

lilactown 2020-04-10T15:17:15.010500Z

cljs.user> (require '[datascript.core :as ds])
nil
cljs.user> (def schema {:user/favourites {:db/cardinality :db.cardinality/many :db/type :db.type/ref}})
#'cljs.user/schema
cljs.user> (def conn (ds/create-conn schema))
#'cljs.user/conn
cljs.user> (ds/transact! conn [[:db/add 1 :user/favourites 52]])
#datascript.db.TxReport{:db-before #datascript/DB {:schema {:user/favourites {:db/cardinality :db.cardinality/many, :db/type :db.type/ref}}, :datoms []}, :db-after #datascript/DB {:schema {:user/favourites {:db/cardinality :db.cardinality/many, :db/type :db.type/ref}}, :datoms [[1 :user/favourites 52 536870913]]}, :tx-data [#datascript/Datom [1 :user/favourites 52 536870913 true]], :tempids {:db/current-tx 536870913}, :tx-meta nil}
cljs.user> (ds/touch (ds/entity @conn 1))
{:user/favourites #{{:db/id 52}}, :db/id 1}
cljs.user> (ds/transact! conn [[:db/retract 1 :user/favourites 52]])
#datascript.db.TxReport{:db-before #datascript/DB {:schema {:user/favourites {:db/cardinality :db.cardinality/many, :db/type :db.type/ref}}, :datoms [[1 :user/favourites 52 536870913]]}, :db-after #datascript/DB {:schema {:user/favourites {:db/cardinality :db.cardinality/many, :db/type :db.type/ref}}, :datoms []}, :tx-data [#datascript/Datom [1 :user/favourites 52 536870914 false]], :tempids {:db/current-tx 536870914}, :tx-meta nil}
cljs.user> (ds/touch (ds/entity @conn 1))
{:db/id 1}

v 2020-04-10T15:29:47.010700Z

nvm i wasnt passing the right entity id

lilactown 2020-04-10T15:30:06.010900Z

👍

lilactown 2020-04-10T15:30:13.011100Z

happens to the best of us