Ich möchte eine Entität zurückziehen und gleichzeitig das Attribut db/txInstant
angeben, aber ich kann dies nicht zum Funktionieren bringen. das Unternehmen zurückzieh sieht wie folgt aus (und das funktioniert):Entity mit einem bestimmten db/txInstant in Datomic zurückziehen?
[[:db.fn/retractEntity [:person/email "[email protected]"]]]
ich verschiedene Möglichkeiten, um auch zu liefern die db/txInstant
Attribut, zum Beispiel versucht haben:
[[:db.fn/retractEntity [:person/email "[email protected]"]]
[:db/txInstant <inst>]]
aber nicht mit:
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)
....
Also meine Frage ist einfach, wie kann ich das db/txInstant
Attribut beim Zurückziehen einer Entität in Datomic angeben?
Was ist der Anwendungsfall dafür? Wenn Sie die Entität finden, die Sie mit ': person/email' zurückziehen möchten, brauchen Sie auch nicht': db/txInstant' anzugeben. –
Der Grund, warum ich dies tun möchte, ist in der Lage zu später Abfrage, wenn ein Attribut zurückgezogen wurde. "Wann" sollte nicht die Systemzeit des Servers sein, auf dem Datomic ausgeführt wird, sondern eine Zeit, die von der Anwendung bestimmt wird. Also ich denke, dass ich dies als txinstant Zeit angeben möchte. – Johan
Leider ist Datomic nicht so zu betreiben. TxInstant ist nur die aktuelle UTC-Zeit, die von der Computeruhr gelesen wird, wenn die Transaktion stattfindet. –