当我尝试使用字符串tempid针对无datomic v0.9.5656交易该实体时,出现以下异常:

(def tx1 {:db/id             "user"
          :contact/full-name "John Wayne"})
(def tx2 {:db/id    "other"
          :some-ref "user"
(let [!rx (d/transact conn [tx2])]
   (prn (:tempids @!rx))
=>

datomic.impl.Exceptions$IllegalArgumentExceptionInfo: :db.error/tempid-not-an-entity tempid used only as value in transaction
    data: {#object[clojure.lang.Keyword 0x74af59e7 ":db/error"] #object[clojure.lang.Keyword 0x57972b49 ":db.error/tempid-not-an-entity"]}
             java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: :db.error/tempid-not-an-entity tempid used only as value in transaction

文档显示我应该能够将字符串用作tempid。我是否缺少阅读器宏来讲述分区?

最佳答案

原来,我指的是事务中未包含的实体的tempid

我希望错误更清楚,例如“您引用了tempid'user',但是此tx中唯一的tempid是:#{“other”}“”然后,我立即发现了错误。

关于clojure - Datomic: `:db.error/tempid-not-an-entity` tempid仅用作交易中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49278607/

10-12 21:16