如果我想将记录粘贴到datomic:
即
{:db/id #db/id[:db.part/user -1226692165], :address/country "Australia"}
我得到了一张地图:
{:db-before #db{1000 #inst "2014-10-28T05:39:40.413-00:00"},
:db-after #db{1001 #inst "2014-10-28T05:39:53.626-00:00"},
:tx-data [#datom[13194139534313 50 #inst "2014-10-28T05:39:53.626-00:00" 13194139534313 true]
#datom[17592186045418 67 "Australia" 13194139534313 true]],
:tempids {-9223350047848912453 17592186045418}}
-9223350047848912453是tempid的关键
现在......这些如何相互映射?
#db/id[:db.part/user -1226692165] <=> -9223350047848912453
答案 0 :(得分:0)
他们没有。这是未定义的行为。
http://docs.datomic.com/clojure/#datomic.api/tempid:
保留的值为-1到-1000000(包括-1和-1000000) 用户创建的tempids。
(你的性感太小了。)
答案 1 :(得分:0)
您可以使用resolve-tempid函数将临时ID映射到实体ID。
这些方面的东西:
(defn transact!
[conn tx]
(let [{eids :tempids} @(d/transact conn tx)]
(map #(d/resolve-tempid (d/db conn)
eids
(:db/id %)) tx)))
否则该关系是有序的(首先是第一个,第二个是第二个,等等)