gpt4 book ai didi

clojure - 将Clojure Spec与Datomic实体一起使用

转载 作者:行者123 更新时间:2023-12-04 04:29:16 24 4
gpt4 key购买 nike

说我有以下规范:

(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?

我的应用程序具有将实体作为参数的函数,并且希望避免为了使规范工具能够在开发中工作而必须对实体进行映射以在任何地方进行映射。

我应该如何通过规范验证实体?

最佳答案

尽管您的命名空间确实有些虚假(应该使用:person/name而不是:: name),但规范中也有一个限制可以取消。当前,s/key要求所有输入集合都符合clojure.core/keys谓词。 Datomic实体不是 map ,因此不要通过该检查(因此不通过有关map?谓词的错误)。

我在这里提交了一个错误报告:http://dev.clojure.org/jira/browse/CLJ-2041如果您愿意,可以随意投票/关注票证。

关于clojure - 将Clojure Spec与Datomic实体一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com