Datomic エンティティ ID が有効であることを確認するにはどうすればよいですか?
私は Scala と Datomisca を使用していますが、どのテストもおそらく Clojure と Datomic にも適用できるはずです。
利用を検討しています
connection.database.entity(id).toMap.nonEmpty
有効なエンティティには少なくとも 1 つの属性があることを前提としています。
これを行うためのより良い、より安全な方法はありますか?
Datomic docs のこのセクションによると:
エンティティは存在テストには適していません。存在テストは通常、一意の ID のルックアップを介して実行する必要があります。
おそらく次のようなものを使用する方が良いでしょう(Clojureで):
(d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)
ID に関連する属性がない場合、これは空のセットを返します。このクエリを抽象化する述語関数を作成できます。
(defn valid-id? [db id]
((comp not empty?) (d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)))
Clojure で例を書いて申し訳ありませんが、Datomisca はわかりません。