エンティティを取り消したいと同時に、db/txInstant
属性を指定したいのですが、これを動作させることができません。エンティティを撤回するとこのようになります(これは動作します):私もdb/txInstant
属性を供給するためにさまざまな方法を試してみたDatomicに特定のdb/txInstantを設定してエンティティをリトラクトしますか?
[[:db.fn/retractEntity [:person/email "[email protected]"]]]
、例えば:
[[:db.fn/retractEntity [:person/email "[email protected]"]]
[:db/txInstant <inst>]]
が、これはで失敗します。
Caused by: datomic.impl.Exceptions$IllegalArgumentExceptionInfo: :db.error/not-a-data-function Not a data function: 50
at datomic.error$arg.invoke (error.clj:57)
datomic.error$arg.invoke (error.clj:55)
datomic.db.Db.getFn (db.clj:1794)
datomic.db.ProcessExpander.inject (db.clj:2473)
datomic.db.ProcessInpoint.inject (db.clj:2372)
datomic.db$with_tx$inject_all__2222$fn__2223.invoke (db.clj:2535)
clojure.lang.PersistentVector.reduce (PersistentVector.java:341)
clojure.core$reduce.invokeStatic (core.clj:6544)
clojure.core$reduce.invoke (core.clj:6527)
datomic.db$with_tx$inject_all__2222.invoke (db.clj:2535)
datomic.db$with_tx.invoke (db.clj:2539)
datomic.peer.LocalConnection/fn (peer.clj:557)
datomic.peer.LocalConnection.transactAsync (peer.clj:557)
datomic.peer.LocalConnection.transact (peer.clj:549)
datomic.api$transact.invoke (api.clj:94)
....
Datomicでエンティティをリトラクトするときに、db/txInstant
属性を指定する方法は簡単です。
このユースケースは何ですか? ':person/email'によって取り消したいエンティティを見つけることができれば、':db/txInstant'も指定する必要はありません。 –
私がこれをやりたい理由は、後で属性が格納されたときに問い合わせることができるようにするためです。 「いつ」は、Datomicを実行しているサーバーのシステム時間ではなく、むしろアプリケーションによって決定された時間です。したがって、私はこれをtxinstantの時刻として指定したいと考えています。 – Johan
残念ながら、それはDatomicが動作する方法ではありません。 txInstantは、トランザクションが発生するたびにコンピュータクロックから読み取られた現在のUTC時間です。 –