2

Datomic エンティティ ID が有効であることを確認するにはどうすればよいですか?

私は Scala と Datomisca を使用していますが、どのテストもおそらく Clojure と Datomic にも適用できるはずです。

利用を検討しています

connection.database.entity(id).toMap.nonEmpty

有効なエンティティには少なくとも 1 つの属性があることを前提としています。

これを行うためのより良い、より安全な方法はありますか?

4

1 に答える 1

4

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 はわかりません。

于 2015-02-08T17:35:21.890 に答える