When I eval this code in lighttable:
(ns app.core
(:require [datomic.api :refer [q] :as d]
:reload-all))
(defn add-person
[conn id]
(d/transact conn [{:db/id #db/id[:db.part/user -1000001]
:person/id id}]))
I get:
clojure.lang.ExceptionInfo: No reader function for tag id
core.clj:4327 clojure.core/ex-info
Anyone knows what is going on?
It's a problem in nREPL. The way I solved this is to start the REPL at the command line with:
This will start a process that you can connect to from LightTable or Emacs. It will print information like:
Now in LightTable, Add a Connection -> Clojure Remote -> 127.0.0.1:XXXXX
The XXXXX should equal the port printed out by lein repl.
If you're in Emacs, cider has the same issue. Follow the same steps of starting lein repl, then use M-x cider-connect (it's default keybinding is C-c M-c).
It looks like there's an issue with trying to set
:person/id
. After the#db/id[:db.part/user -1000001]
part, you've got a temporary id for adding data.You should be able to start setting attributes for the entity using things like things like
:person/name name
.If you're trying to create a "public id" type of thing, this blog post may be helpful.
This tutorial is attributed to stuart halloway and Bobby Calderwood:
Source: https://github.com/Datomic/day-of-datomic/blob/master/samples/literals_vs_code.clj