假设我有以下规格:
(s/def :person/age number?)
(s/def :person/name string?)
(s/def ::person (s/keys :req [:person/name :person/age]))
然后我从 Datomic 获取一个实体:
(def person-entity (d/entity (d/db conn) [:person/name "Mr entity"]))
如果我尝试检查与规范的一致性,它会失败,因为实体不是地图:
(s/explain ::person person-entity)
val: #:db{:id 17592186069950} fails spec: :some-ns/person predicate: map?
我的应用程序具有将实体作为参数的函数,并且希望避免为了让规范检测在开发中工作而不得不将实体具体化为无处不在的映射。
我应该如何通过规范验证实体?