测试 clojure PersistentArrayMap 和数据 EntityMap 之间的相等性?
Test for equality between a clojure PersistentArrayMap and a datomic EntityMap?
我正在为我的数据代码编写一些测试。我创建一个事务映射:
(def tx-map
{:db/id #db/id[:db.part/user -1000235]
:some-ns/my-attr {:db/id 17592186045421}}
交易正常。我查询我新添加的实体:
(def ent
"Query result."
{:db/id 17592186045425})
测试一下是否一切正常:
(= (:some-ns/my-attr tx-map) ; {:db/id 17592186045421}
(:some-ns/my-attr ent)) ; {:db/id 17592186045421}
=> false ; All is not well
原因是?
(type (:some-ns/my-attr tx-map)) => clojure.lang.PersistentArrayMap
(type (:some-ns/my-attr ent)) => datomic.query.EntityMap
如何正确测试 clojure PersistentArrayMap 和数据 EntityMap 之间的相等性?
Datomic EntityMap 目前不支持关联和其他 Clojure 映射接口功能,但正在考虑此功能。
要将实体转换为 Clojure 映射,只需使用 (into)。
(进入 {} 个实体)
参考:https://groups.google.com/d/msg/datomic/IzRSK9e7VJo/YGejFLl3vxYJ
但这不是这里的问题,因为这给出了如果我们实现整个地图将返回的全部属性。
实体是惰性地图,因此无法与地图进行比较。
http://docs.datomic.com/entities.html
但是它们是关联的,我们可以获得每个属性的值。所以你可以比较 id
s :
(== (:db/id (:some-ns/my-attr tx-map)) ; 17592186045421
(:db/id ent)) ; 17592186045421
注意 ==
,我们比较两个数字...;)
因此只会选择 :db/id
。也许 ent
函数应该给你 id
。
(def ent
":db/id of query result."
17592186045425)
测试变为:
(== (:db/id (:some-ns/my-attr tx-map)) ; 17592186045421
ent) ; 17592186045421
很抱歉回答晚了,我很忙。
警告,这只是根据文档,我现在没有可运行的安装 datomic 版本...
我正在为我的数据代码编写一些测试。我创建一个事务映射:
(def tx-map
{:db/id #db/id[:db.part/user -1000235]
:some-ns/my-attr {:db/id 17592186045421}}
交易正常。我查询我新添加的实体:
(def ent
"Query result."
{:db/id 17592186045425})
测试一下是否一切正常:
(= (:some-ns/my-attr tx-map) ; {:db/id 17592186045421}
(:some-ns/my-attr ent)) ; {:db/id 17592186045421}
=> false ; All is not well
原因是?
(type (:some-ns/my-attr tx-map)) => clojure.lang.PersistentArrayMap
(type (:some-ns/my-attr ent)) => datomic.query.EntityMap
如何正确测试 clojure PersistentArrayMap 和数据 EntityMap 之间的相等性?
Datomic EntityMap 目前不支持关联和其他 Clojure 映射接口功能,但正在考虑此功能。
要将实体转换为 Clojure 映射,只需使用 (into)。
(进入 {} 个实体)
参考:https://groups.google.com/d/msg/datomic/IzRSK9e7VJo/YGejFLl3vxYJ
但这不是这里的问题,因为这给出了如果我们实现整个地图将返回的全部属性。
实体是惰性地图,因此无法与地图进行比较。 http://docs.datomic.com/entities.html
但是它们是关联的,我们可以获得每个属性的值。所以你可以比较 id
s :
(== (:db/id (:some-ns/my-attr tx-map)) ; 17592186045421
(:db/id ent)) ; 17592186045421
注意 ==
,我们比较两个数字...;)
因此只会选择 :db/id
。也许 ent
函数应该给你 id
。
(def ent
":db/id of query result."
17592186045425)
测试变为:
(== (:db/id (:some-ns/my-attr tx-map)) ; 17592186045421
ent) ; 17592186045421
很抱歉回答晚了,我很忙。
警告,这只是根据文档,我现在没有可运行的安装 datomic 版本...