验证 Datomic 实体 ID 是否有效
Verifying that a Datomic entity id is valid
如何验证 Datomic 实体 ID 是否有效?
我正在使用 Scala 和 Datomisca,但任何测试应该也适用于 Clojure 和 Datomic。
我正在考虑使用
connection.database.entity(id).toMap.nonEmpty
假设一个有效的实体至少有一个属性。
有更好、更安全的方法吗?
根据 Datomic 文档中的 this section:
Entities are not suitable for existence tests, which should typically be performed via lookup of a unique identity.
使用这样的东西(在 Clojure 中)可能更好:
(d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)
如果没有与 id 相关的属性,这将 return 一个空集。您可以创建一个谓词函数来抽象此查询:
(defn valid-id? [db id]
((comp not empty?) (d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)))
很抱歉用 Clojure 编写示例,但我不了解 Datomisca。
如何验证 Datomic 实体 ID 是否有效?
我正在使用 Scala 和 Datomisca,但任何测试应该也适用于 Clojure 和 Datomic。
我正在考虑使用
connection.database.entity(id).toMap.nonEmpty
假设一个有效的实体至少有一个属性。
有更好、更安全的方法吗?
根据 Datomic 文档中的 this section:
Entities are not suitable for existence tests, which should typically be performed via lookup of a unique identity.
使用这样的东西(在 Clojure 中)可能更好:
(d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)
如果没有与 id 相关的属性,这将 return 一个空集。您可以创建一个谓词函数来抽象此查询:
(defn valid-id? [db id]
((comp not empty?) (d/q '[:find ?a
:in $ ?entid
:where [?entid ?a]]
db
id)))
很抱歉用 Clojure 编写示例,但我不了解 Datomisca。