2013-03-12 5 views
8

私はlighttableにこのコードをevalし:Datomicを使用して "いいえリーダー機能" エラー

(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}])) 

私が取得:

​​

誰もが何が起こっているか知っていますか?

+1

'#db/id'リテラルが原因です。 – vemv

答えて

0

:person/idを設定しようとすると問題が発生しているようです。 #db/id[:db.part/user -1000001]の部分の後に、データを追加するための一時的なIDがあります。

:person/name nameのようなものを使用してエンティティの属性を設定することができるはずです。

「公開ID」タイプのものを作成しようとしている場合は、blog postが役に立ちます。

2

このチュートリアルでは、stuart hallowayBobby Calderwoodに起因する:

(use :reload 'datomic.samples.repl) 
(easy!) 
(def conn (scratch-conn)) 

;; in data, use data literals for tempids 
(def tx-data [{:db/id #db/id[:db.part/user] 
       :db/doc "Example 1"}]) 
(transact conn tx-data) 

;; in code, call tempid to create tempids 
(let [id (tempid :db.part/user) 
     doc "Example 2"] 
    (transact conn [{:db/id id :db/doc doc}])) 

;; same argument applies to functions: 
;; use #db/fn literals in data 
;; use Peer.function or d/function in code 

;; broken, uses db/fn literal in code 
(transact conn [{:db/id #db/id [:db.part/user] 
       :db/ident :hello 
       :db/fn #db/fn {:lang "clojure" 
           :params [] 
           :code '(println :hello)}}]) 

;; corrected: used d/function to construct function 
(transact conn [{:db/id (d/tempid :db.part/user) 
       :db/ident :hello 
       :db/fn (d/function {:lang "clojure" 
            :params [] 
            :code '(println :hello)})}]) 
(d/invoke (db conn) :hello) 

出典:それはnREPLで問題だhttps://github.com/Datomic/day-of-datomic/blob/master/samples/literals_vs_code.clj

0

。これは、あなたがLightTableやemacsからに接続できるプロセスを開始します

lein repl 

:私はこれを解決方法を使用してコマンドラインでREPLを起動することです。 > Clojureのリモート - - > 127.0.0.1:XXXXX

XXXXXは、レインのreplでプリントアウトポートに等しくなければならない接続の追加、

LightTableで今
nREPL server started on port 51395 on host 127.0.0.1 
          ^^^^^ 

:それは次のような情報を出力します。

あなたがEmacsにいる場合、サイダーも同じ問題があります。 lein replを開始するのと同じ手順を実行し、M-x cider-connectを使用します(デフォルトのキーバインドはC-c M-cです)。

関連する問題